F# 调用静态方法时可以省略类名吗?

F# 调用静态方法时可以省略类名吗?,f#,F#,在F#中,调用静态方法时是否可以省略类名 例如: 在C#中,我可以执行以下操作: 使用静态Bizmonger.Patterns.MessageBus; ... 发布(“一些信息”); 而不是: MessageBus.Publish(“SOME_MESSAGE”); 我可以在F#中做类似的事情吗?在F#中,您可以在名称空间上使用open(就像在C#中使用using)或在模块上(当您调用的API是用F#编写的时候这很有用),但不能在静态类上使用(这是调用C#库时需要的) 不过,您可以做一件事来缩

在F#中,调用静态方法时是否可以省略类名

例如:

在C#中,我可以执行以下操作:

使用静态Bizmonger.Patterns.MessageBus;
...
发布(“一些信息”);
而不是:

MessageBus.Publish(“SOME_MESSAGE”);
我可以在F#中做类似的事情吗?

在F#中,您可以在名称空间上使用
open
(就像在C#中使用
using
)或在模块上(当您调用的API是用F#编写的时候这很有用),但不能在静态类上使用(这是调用C#库时需要的)

不过,您可以做一件事来缩短代码,即定义一个类型别名:

type M = Bizmonger.Patterns.MessageBus;

// Now you can write just
M.Publish("SOME_MESSAGE")

// Rather than writing the full
MessageBus.Publish("SOME_MESSAGE");
允许在静态类上使用
open
(就像在C#中一样),因此如果您希望这样做,请在那里进行投票和评论。

在F#中,您可以在名称空间(就像在C#中使用
一样)或模块上使用
open
(当您调用的API是用F#编写的时,这很有用),但不是在静态类上(这是调用C#库时需要的)

不过,您可以做一件事来缩短代码,即定义一个类型别名:

type M = Bizmonger.Patterns.MessageBus;

// Now you can write just
M.Publish("SOME_MESSAGE")

// Rather than writing the full
MessageBus.Publish("SOME_MESSAGE");

允许在静态类上使用
open
(就像在C#中一样),因此如果您希望这样做,请在那里进行投票和评论。

我还了解到,我可以实现一个函数作为客户端调用的包装器

创建包装函数

module Messages

    open Bizmonger.Patterns

    let Publish (message:string, payload:_) =
        MessageBus.Publish(message, payload)
客户端 然后,客户机现在可以在不指定类名的情况下调用函数

open Messages
...
Publish("SOME_MESSAGE", null);

我还了解到,我可以实现一个函数作为客户端调用的包装器

创建包装函数

module Messages

    open Bizmonger.Patterns

    let Publish (message:string, payload:_) =
        MessageBus.Publish(message, payload)
客户端 然后,客户机现在可以在不指定类名的情况下调用函数

open Messages
...
Publish("SOME_MESSAGE", null);

由于函数是F#中的一等公民,您也可以省略参数并编写
let Publish=MessageBus.Publish
。由于函数是F#中的一等公民,您也可以省略参数并编写
let Publish=MessageBus.Publish
。F#UserVoice已迁移到GitHub,迁移后在UserVoice上留下的任何投票都将不可见。如果有人找到这个答案并想投票支持这个功能,你应该这样做,而不是在UserVoice上。F#UserVoice已经迁移到GitHub,迁移后在UserVoice上留下的任何投票都将不可见。如果有人找到这个答案并想投票支持这个功能,你应该这样做,而不是在UserVoice上。