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

时间:2015-11-16 22:31:19

标签: f#

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

示例:

在C#中,我可以做类似的事情:

using static Bizmonger.Patterns.MessageBus;
...
Publish("SOME_MESSAGE");

而不是:

MessageBus.Publish("SOME_MESSAGE");

我可以在F#中做这样的事情吗?

2 个答案:

答案 0 :(得分:7)

在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");

有一个feature request on the F# UserVoice允许在静态类上使用open(就像在C#中一样),所以如果您希望这样做,请在那里进行投票和评论。

答案 1 :(得分:0)

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

创建包装函数

sh /var/www/test.sh   
exit 0

<强>客户端 然后,客户端现在可以在不指定类名的情况下调用函数。

cd /home/jeff/test && rails s Puma -d