从F#访问名称中包含.base的名称空间

em7*_*m70 5 .net f# interop naming-conventions keyword

正如标题所说,我正在尝试使用在名称空间中声明的类,其名称中包含"base".想想以下情况:

open Foo.base.Bar
Run Code Online (Sandbox Code Playgroud)

在C#中,我只是在base之前使用@,但是F#似乎忽略了它,并认为@是用于列表连接的中缀运算符.由于命名空间属于我无法修改的第三方库,有没有办法我仍然可以从F#访问它?

Tom*_*cek 6

在F#中,您可以通过在两对符号之间包含特殊名称来实现类似的功能.以下应该做的伎俩:

open Foo.``base``.Bar
Run Code Online (Sandbox Code Playgroud)

这比C#更灵活 - 名称几乎可以包含任何内容,因此您可以在名称中定义具有空格的成员:

let ``some name!`` = 42
Run Code Online (Sandbox Code Playgroud)

  • 这是一个方便的功能; 在F#产品单元测试中,我们将测试命名为"member this.\`.添加对项目的引用正确地更新.fsproj文件\``()".:) (3认同)