2011-01-13 9 views
1

Ich möchte, dass der Benutzer einen Aufzählungsnamen, sagen wir "Farbe" und einen Wert, sagen wir "rot", angibt, ob dies ein Mitgliedswert ist Aufzählung, oder wenn die Aufzählung überhaupt existiert.Analyse der vom Benutzer bereitgestellten Aufzählungswerte in C#

Wie kann ich das tun?

In der Vergangenheit habe ich Type.GetType ("UserProvidedType"). Parse/Convert.ChangeType verwendet, aber dies scheint nicht zu funktionieren, wenn der vom Benutzer bereitgestellte Typ eine Enumeration ist. Bitte beachten Sie: Parsing to primitive types, based on user input in c# für ältere Lösungen, die in diesem Zusammenhang nicht zu funktionieren scheinen.

Danke.

+0

Ist der Wert eine Zeichenfolge/ein enum/ein ganzzahliger Typ? Können Sie eine Beispielverfahrensignatur angeben? – Ani

+0

Der zu erkennende Wert wäre eine Zeichenkette. Der Benutzer liefert jedoch auch die Zeichenfolge, die den Aufzählungstyp darstellt. Sie würden also "Farbe", "Rot" sagen und auf einen Knopf klicken, der dann sagen würde, ja, Rot ist eine Farbe. oder "mysteriösEnum" "rot", klick, und sie würden "unerkanntes Enum" aussteigen. Auch "Color" "Food" würde in Enum keinen solchen Wert zurückgeben. – user420667

Antwort

6
var type = Type.GetType("YourNameSpace.Color"); 
var belongs = Enum.GetNames(type).Any(o => o == "Red"); 
+0

hm ... das ist seltsam. Wenn ich das obige versuche, ist oType null. – user420667

+0

var type = Type.GetType ("System.Drawing.Color") nicht – HABJAN

+0

arbeiten Beeilen Sie sich nicht für Downvoting :-) –

Verwandte Themen