2011-12-15 145 views
1

是否有任何簡單的方法從C#代碼中訪問F#映射?從C#代碼中訪問F#映射

我的意思是,C#和F#列表都是可枚舉的,所以我可以通過該接口從C#代碼中迭代F#列表,就像這個post中所解釋的那樣。

假設我聲明瞭一個F#模塊內部這樣的地圖稱爲module.fs:

let MyMap : Map<string,T>> 

我想從內C#這種方式訪問​​地圖:

Map m = module.MyMap; 

可能做這樣的事情而不執行轉換?

回答

4

Map在F#外訪問時調用FSharpMap。你可以使用var來避免尷尬的類型名稱(在你的例子中)。但是,大多數F#特定類型實現了跨語言邊界發揮良好效果的接口。例如,Map實現了​​。在F#之外使用的API中,推薦的解決方案是公開這些接口。

查看Component Design Guidelines瞭解更多建議。

話雖如此,您可以使用C#中的FSharpMap沒有任何問題。它看起來很奇怪,不適合用慣用的C#代碼。