F# 调用静态方法时可以省略类名吗?
在F#中,调用静态方法时是否可以省略类名 例如: 在C#中,我可以执行以下操作:F# 调用静态方法时可以省略类名吗?,f#,F#,在F#中,调用静态方法时是否可以省略类名 例如: 在C#中,我可以执行以下操作: 使用静态Bizmonger.Patterns.MessageBus; ... 发布(“一些信息”); 而不是: MessageBus.Publish(“SOME_MESSAGE”); 我可以在F#中做类似的事情吗?在F#中,您可以在名称空间上使用open(就像在C#中使用using)或在模块上(当您调用的API是用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上。