| 

.NET C# Java Javascript Exception

5
Wenn ich folgenden Enum habe:

enum Obst { Apfel, Birne, Clementine, Dattel };


dann kann ich den instanzieren:
Obst obst;

Wie kann ich jetzt den String "Dattel" in den entsprechenden Eintrag in der Enum umwandeln?
obst = GetEnum("Dattel");

Was ich erwartet habe nämlich
obst  = Obst.GetFromString("Dattel");

klappt nicht.
04.02.2011
squishy 53 1 5
3 Antworten
6
Das kannst du so machen:

Obst obst = (Obst) Enum.Parse(typeOf(Obst), "Dattel");
04.02.2011
Andy Stumpp 509 1 6
5
public enum Obst { Apfel, Birne, Clementine, Dattel };

public static class MyExtendsMethods
{
public static T GetField<T>(this string s)
{
if (Enum.IsDefined(typeof(T), s))
{
T en = (T)Enum.Parse(typeof(T), s);
return en;
}
return default(T);
}
}


abfragen kannst dann über den String:

string enumString = "Dattel";
var enumField = enumString.GetField<Obst>();


Damit kannst es auf alle möglichen Enums anwenden und du jast sichergestellt, ob dein Cast auch fehlerfrei funktioniert.
06.02.2011
Rene Drescher-Hackel 1,1k 1 8
0
Du musst also die String Klasse um eine Methode erweitern, so dass Sie in einen Enum Wert konvertieren kann. Dann auch noch den umgekehrten Weg, nämlich die Enum Klasse so erweitern, dass Sie einen Wert zu einem String machen kann.
Alles zusammen:
enum Obst { Apfel, Birne, Clementine, Dattel }

static class ObstExtensions
{
public static string AsString(this Enum value)
{
return value.ToString();
}
public static T GetField<T>(this string s)
{
if (Enum.IsDefined(typeof(T), s))
{
T en = (T)Enum.Parse(typeof(T), s);
return en;
}
return default(T);
}
}

static void Main()
{
string a = Obst.Apfel.AsString();
Obst b = "Birne".GetField<Obst>();
}
07.02.2011
DaSpors 4,2k 2 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH