使用C#from F#代码中定义的扩展方法
我为各种类定义了一系列扩展方法 在图书馆里。我目前正在编写一些F#代码,而不是重写 我只想在我的F#代码中使用现有的扩展方法 我添加了对库的引用并使用了 open语句以导入命名空间, 但是扩展方法不会出现在F#Update中: 在当前版本的F#中,您可以通过添加使用C#from F#代码中定义的扩展方法,c#,f#,extension-methods,C#,F#,Extension Methods,我为各种类定义了一系列扩展方法 在图书馆里。我目前正在编写一些F#代码,而不是重写 我只想在我的F#代码中使用现有的扩展方法 我添加了对库的引用并使用了 open语句以导入命名空间, 但是扩展方法不会出现在F#Update中: 在当前版本的F#中,您可以通过添加 open TheNamespaceOfExtensionMethod 到您的源文件(就像您在C#中使用using指令所做的那样),并简单地调用扩展方法,就好像它是一个普通的实例方法一样 顺便说一句,您可以像普通静态方法一样直接调用它们
open TheNamespaceOfExtensionMethod
到您的源文件(就像您在C#中使用using
指令所做的那样),并简单地调用扩展方法,就好像它是一个普通的实例方法一样
顺便说一句,您可以像普通静态方法一样直接调用它们,如果需要的话,可以将对象引用作为第一个参数传递,而无需任何指令。扩展方法只是一种静态方法,在引擎盖下装饰有ExtensionAttribute
原始答案(在F#2010测试版之前;正如戴卡姆指出的那样,不再是真的):
我认为F#不支持扩展方法。您可以像普通静态方法一样直接调用它们,并将对象引用作为第一个参数传递。能够“导入”C#/VB扩展方法将在下一版本的F#中得到支持
另见
有关此主题的更多详细信息。+1。确切地说,扩展方法是一种语言特性,而不是CLR特性。它们是真正的语法糖,可以使某些类型的静态方法看起来像实例方法。