Ich habe eine F # -Klasse, die von einer .NET-Klasse mit mehreren Konstruktoren abgeleitet ist. Um sie alle verfügbar zu machen, implementiere ich einen Typ ohne primären Konstruktor. Jetzt möchte ich ein statisches Feld hinzufügen. Wie initialisiere ich das statische Feld? Bedenken Sie:In F #, wie initialisiere ich statische Felder in einem Typ ohne primären Konstruktor?
type MyType =
inherit DotNetType
[<DefaultValue>] static val mutable private myStatic : int
new() = { inherit DotNetType() }
new (someArg:string) = { inherit DotNetType(someArg) }
Nun, wie kann ich die „myStatic“ Feld in einer Art und Weise zu initialisieren, die genau einmal ausgeführt wird, wenn der Typ verwendet wird, und schon gar nicht, wenn der Typ nie verwendet? Im Wesentlichen brauche ich das Äquivalent eines C# statischen Konstruktorblocks.
Würde, die Ihr Problem lösen: https://msdn.microsoft.com /de-de/library/dd483473.aspx? – MarcinJuraszek
Nein, es wäre nicht, weil mein Typ keinen primären Konstruktor hat. Ein "static do" bringt mir diesen Fehler: "Statische Wertdefinitionen dürfen nur in Typen mit einem primären Konstruktor verwendet werden. Erwägen Sie, der Typdefinition Argumente hinzuzufügen, z. B. 'type X (args) = ...'." Danke für die Antwort, obwohl. –