如何在不打开的情况下从F#调用C#扩展方法?

sdg*_*sdh -1 c# clr extension-methods f#

我在C#中有一个扩展方法:

Foo(this Bar bar, int x)
{
    // Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我如何在F#中调用它?

bar.Foo(100); // Doesn't work
bar.Namespace.Foo(100); // Doesn't work
Run Code Online (Sandbox Code Playgroud)

如何在F#中的.NET列表中使用扩展方法Sum的答案需要打开模块.我可以不使用扩展方法open吗?

Joe*_*ler 5

这个问题在F#和C#中是一样的.要使用扩展方法,您可以打开命名空间(F#)或使用命名空间的using语句(C#),或者如果由于某种原因您不能或不想打开命名空间,则可以完全限定方法.

在两种语言中,System.Linq命名空间都打开:

myArray.Sum()
Run Code Online (Sandbox Code Playgroud)

在两种语言中,没有System.Linq打开名称空间:

System.Linq.Enumerable.Sum(myArray)
Run Code Online (Sandbox Code Playgroud)