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

时间:2009-04-22 13:40:08

标签: c# f# extension-methods

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

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

2 个答案:

答案 0 :(得分:18)

更新

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

来简单地使用扩展方法
open TheNamespaceOfExtensionMethod

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

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

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

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

答案 1 :(得分:9)

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

另见

F# extension methods in C#

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