Ich habe eine Bibliothek geschrieben in F #, verbraucht von C # und F #. Diese Bibliothek definiert eine Klasse foo
im Modul bar
im Namensraum random
:
Wenn ich nun den Typ random.foo.bar
verwende, sieht C # intellisense den Typ bar
, geschachtelt im Typ random.foo
.
Die Frage ist: Gibt es einen Vorteil für C #, um extern konsumierbaren Code in Module anstatt in Namespaces zu definieren? Ich verstehe, dass Module eine gute Möglichkeit sind, Funktionen zu gruppieren, aber was ist mit Klassen?
Wenn Sie F # -Komponenten zum Verbrauch aus anderen .Net-Sprachen veröffentlichen, sollten Sie Module in den öffentlichen Schnittstellen vermeiden und sich an Namespaces halten, die Klassen, Strukturen und Enums enthalten.
(Module sind eine praktische Möglichkeit, um Werte, Funktionen und Typen unter F # -only-Komponenten zu veröffentlichen oder als 'interne' Implementierungsdetails einer F # -Komponente, die .NET-Klassen veröffentlicht.)
Tags und Links f#