我知道你可以在c#中定义空命名空间扩展方法,你能在F#中定义相同的方法供C#使用吗?我遵循了this关于获得C#兼容扩展方法的一般帖子,但是我没有任何运气来确定1-1转换的最后一步。
这不是重复,我正在寻找定义C#所涉及的全局命名空间中的扩展方法的方法,而不是如何定义C#中可以看到的F#中的常规扩展方法。 / p>
答案 0 :(得分:2)
你肯定可以在F#中创建这样的扩展方法。这可以通过Global Namespace利用在任何名称空间外声明的F#模块进入此默认global名称空间的功能来实现,如下面的代码片段所示:
// Tested under Visual Studio 2013 Premium/F# 3.1:
// F# library module
[<System.Runtime.CompilerServices.Extension>]
module Extension
[<System.Runtime.CompilerServices.Extension>]
let Superb(s: System.String) = "Superb!!!"
和
// Use extension method on System.String from C# console app:
class Test
{
static void Main(string[] args)
{
System.Console.WriteLine("abc".Superb());
}
}