Ich versuche, einen stark typisierten Enumeration-Wert aus einer Zeichenfolge zurückzugeben. Ich bin mir sicher, dass es einen besseren Weg dafür gibt. Dies scheint einfach zu viel Code für eine einfache Sache wie folgt:Wie wird ein Enum-Wert aus einer Zeichenfolge zurückgegeben?
public static DeviceType DefaultDeviceType
{
get
{
var deviceTypeString = GetSetting("DefaultDeviceType");
if (deviceTypeString.Equals(DeviceType.IPhone.ToString()))
return DeviceType.IPhone;
if (deviceTypeString.Equals(DeviceType.Android.ToString()))
return DeviceType.Android;
if (deviceTypeString.Equals(DeviceType.BlackBerry.ToString()))
return DeviceType.BlackBerry;
if (deviceTypeString.Equals(DeviceType.Other.ToString()))
return DeviceType.Other;
return DeviceType.IPhone; // If no default is provided, use this default.
}
}
Ideen?
Basierend auf der Rückmeldung, die ich von der Community erhielt, habe ich mich entschieden, eine Methodenerweiterung zu verwenden, die eine Zeichenfolge in eine Aufzählung konvertiert. Es benötigt einen Parameter (den Standard-Enumerationswert). Dieser Standard stellt auch den Typ bereit, sodass das generische abgeleitet werden kann und nicht explizit mit <> angegeben werden muss. Die Methode ist jetzt auf diese verkürzt:
Sehr coole Lösung, die in der Zukunft wiederverwendet werden kann.
Sehr cool, ich mag die Möglichkeit, einen Standard zur Verfügung zu stellen - ich werde wahrscheinlich am Ende verwenden. Vielen Dank. –
Dies ist ein guter Ansatz. Abhängig von Ihrer .NET-Version können Sie mit der neueren Enum.TryParse diese Methode beibehalten, während Sie den try-Block entfernen. – TechNeilogy
@TechNeilogy Ich benutze .net 3.5, sah nicht die TryParse-Methode - das muss neu sein mit 4.0? –