我知道您可以在c#中定义空的命名空间扩展方法,您能在F#中定义相同的方法供C#使用吗?我遵循了这关于获得C#兼容的扩展方法的一般文章,但我没有找到1-1转换的最后一步。
这不是重复,我正在寻找定义全局命名空间中的扩展方法的方法,就C#而言,而不是如何在F#中定义C#可以看到的常规扩展方法。
发布于 2015-03-15 08:00:42
您肯定可以在F#中创建这样的扩展方法。这可以通过全球命名空间来实现,它利用在任何名称空间之外声明的F#模块进入这个默认的全局名称空间的特性,如下所示:
// 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());
}
}https://stackoverflow.com/questions/29052117
复制相似问题