2011-12-15 78 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#代码。