Erstellt einen diskriminierten Unionsfall aus String

7

Ich versuche, DU-Fälle aus Strings zu erstellen. Die einzige Möglichkeit, dies zu sehen, besteht darin, die DU-Fälle über Microsoft.FSharp.Reflection.FSharpType.GetUnionCases aufzuzählen und dann die UnionCase auszuwählen, die mit der Zeichenfolge übereinstimmt (indem .Name verwendet wird) und dann den tatsächlichen DU-Fall daraus zu machen. co_de%.

Gibt es dafür keine einfachere / elegantere Methode? In meinem Szenario habe ich eine DU mit ein paar hundert Fällen für Keywords. Ich muss die Strings (Schlüsselwörter) aus einer Datei lesen und die Typen daraus machen. Ich habe einige "Optimierungen" gemacht, indem ich die Fälle in eine Map eingefügt habe, aber ich hatte gehofft, dass es einen besseren Weg geben würde.

Ich habe zum Beispiel folgendes:

%Vor%     
siki 04.02.2014, 17:37
quelle

3 Antworten

9

Ich habe dieses handliche Code-Snippet gefunden ...

%Vor%

... was es einfach macht, zwei Zeilen Code an jedes DU anzuhängen ...

%Vor%     
Wally 24.04.2016 20:36
quelle
6

Ich würde Muster wie folgt verwenden:

%Vor%

Und vielleicht automatisch die Match-Anweisung zuerst mit Regex in meinem Editor generieren, aber nur, weil Sie Hunderte von Fällen haben. Aber ich bin mir nicht sicher, ob es eine bessere Lösung als deine ist.

    
rasmusm 04.02.2014 17:56
quelle
6

Da die Fälle keinen Wert haben, können Sie auch enums verwenden:

%Vor%

Dann können Sie einfach Enum.Parse .

    
Phillip Trelford 04.02.2014 18:07
quelle

Tags und Links