使用F#代码中的C#中定义的扩展方法

我为C#库中的各种类定义了一系列扩展方法。 我目前正在编写一些F#代码,而不是重写代码,我只想在我的F#代码中使用现有的扩展方法。

我添加了对库的引用并使用open语句导入命名空间,但扩展方法没有出现在F#中

更新:

在当前版本的F#中,您可以通过添加来简单地使用扩展方法

open TheNamespaceOfExtensionMethod 

到您的源文件(就像在C#中使用using指令一样)并简单地调用扩展方法,就像它是一个普通的实例方法一样。

顺便说一句,你总是可以像普通的静态方法一样直接调用它们,如果你愿意的话,可以将对象引用作为第一个参数传递而不带任何指令。 扩展方法只是一个在引擎盖下使用ExtensionAttribute修饰的静态方法。

原始答案(在F#2010测试版之前;不再是真实的,正如Dykam指出的那样):

我不认为F#支持扩展方法。 您可以像普通静态方法一样直接调用它们,并将对象引用作为第一个参数传递。

下一版本的F#将支持能够“导入”C#/ VB扩展方法。

也可以看看

C#中的F#扩展方法

有关该主题的更多详细信息。