Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I omit the class name when calling a static method?

Tags:

f#

In F#, can I omit the class name when calling a static method?

Example:

In C#, I can do something like:

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

instead of:

MessageBus.Publish("SOME_MESSAGE");

Can I do something like this in F#?

like image 461
Scott Nimrod Avatar asked Dec 20 '25 17:12

Scott Nimrod


1 Answers

EDIT: you can now (since F# 5) use open type which opens all static methods of a class. See this answer.

Leaving original answer below for posterity.


In F#, you can use open on namespaces (just like using in C#) or on modules (which is useful when the API you are calling has been written in F#), but not on static classes (which is what you'd need when calling C# libraries).

One thing that you can do though to make the code a bit shorter is to define a type alias:

type M = Bizmonger.Patterns.MessageBus;

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

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

There is a feature request on the F# UserVoice to allow using open on static classes (just like in C#) and so if you'd like this to happen, please upvote and comment there.

like image 151
Tomas Petricek Avatar answered Dec 23 '25 06:12

Tomas Petricek



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!