Ich habe eine ENUM stellvertretend für alle Materialverbunde Codes im System:Wie kann ich einen enum Wert von seiner Beschreibung erhalten?
public enum EAssemblyUnit
{
[Description("UCAL1")]
eUCAL1,
[Description("UCAL1-3CP")]
eUCAL13CP,
[Description("UCAL40-3CP")]
eUCAL403CP, // ...
}
In Legacy-Code in einem anderen Teil des Systems, ich habe mit Strings markierte Objekte, die die ENUM-Beschreibungen entsprechen. Wenn man einen dieser Strings erhält, was ist der sauberste Weg, um den Enum-Wert zu erhalten? Ich sehe so etwas wie:
public EAssemblyUnit FromDescription(string AU)
{
EAssemblyUnit eAU = <value we find with description matching AU>
return eAU;
}
Ugh, hoffte wirklich "hier ist eine praktische Funktion, die sich wie ein Wörterbuch <> zwischen Beschreibung und Wert verhält". Vielleicht werde ich eine Klasse erstellen, die dieses Wörterbuch statisch enthält und es füllt, wenn es das erste Mal benötigt wird ...? –
Ja - das Kernbit, das du brauchst, ist das Bit meiner Antwort, das die Beschreibung gibt. Oh stopf es ... Ich werde es jetzt schreiben. Bleib dran :) –
Ja, das habe ich mir gedacht, aber ich werde froh sein, Code von Jon Skeet in 5 Minuten über das zu schreiben, woran ich mich wahrscheinlich in mehr als einer Stunde schreiben würde. Geprüft. Klappt wunderbar. –