你能定义与 C# 兼容的无名称空间扩展方法吗?

Can you define namespace-less extension methods compatible with C#?

我知道您可以在 C# 中定义空命名空间 扩展方法,您能否在 F# 中定义相同的方法以供 C# 使用?我按照 this general post 获取 C# 兼容的扩展方法,但我没有找到 1-1 转换的最后一步。

这不是重复的,我正在寻找就 C# 而言在全局命名空间中定义扩展方法的方法,而不是如何在 F# 中定义 C# 可以看到的常规扩展方法。

绝对可以在 F# 中创建此类扩展方法。这可以通过 Global Namespace exploiting the feature that an F# module declared outside of any namespace gets into this default 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());
    }
}