【问题标题】:Using extension methods defined in C# from F# code在 F# 代码中使用 C# 中定义的扩展方法
【发布时间】:2009-04-22 13:40:07
【问题描述】:

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

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

【问题讨论】:

    标签: c# f# extension-methods


    【解决方案1】:

    更新:

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

    open TheNamespaceOfExtensionMethod
    

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

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

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

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

    【讨论】:

    • +1。确切地说,扩展方法是一种语言特性,而不是 CLR 特性。它们实际上是使某些静态方法看起来像实例方法的语法糖。
    【解决方案2】:

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

    另见

    F# extension methods in C#

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-17
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多