Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#from F#代码中定义的扩展方法_C#_F#_Extension Methods - Fatal编程技术网

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

使用C#from F#代码中定义的扩展方法,c#,f#,extension-methods,C#,F#,Extension Methods,我为各种类定义了一系列扩展方法 在图书馆里。我目前正在编写一些F#代码,而不是重写 我只想在我的F#代码中使用现有的扩展方法 我添加了对库的引用并使用了 open语句以导入命名空间, 但是扩展方法不会出现在F#Update中: 在当前版本的F#中,您可以通过添加 open TheNamespaceOfExtensionMethod 到您的源文件(就像您在C#中使用using指令所做的那样),并简单地调用扩展方法,就好像它是一个普通的实例方法一样 顺便说一句,您可以像普通静态方法一样直接调用它们

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

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

Update中: 在当前版本的F#中,您可以通过添加

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

顺便说一句,您可以像普通静态方法一样直接调用它们,如果需要的话,可以将对象引用作为第一个参数传递,而无需任何指令。扩展方法只是一种静态方法,在引擎盖下装饰有
ExtensionAttribute

原始答案(在F#2010测试版之前;正如戴卡姆指出的那样,不再是真的): 我认为F#不支持扩展方法。您可以像普通静态方法一样直接调用它们,并将对象引用作为第一个参数传递。

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

另见


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

+1。确切地说,扩展方法是一种语言特性,而不是CLR特性。它们是真正的语法糖,可以使某些类型的静态方法看起来像实例方法。