Próbuję zwrócić mocno wpisaną wartość wyliczenia z ciągu znaków. Jestem pewien, że jest lepszy sposób na zrobienie tego. Wydaje się, że to za dużo kodu na prostą rzecz:Jak zwrócić wartość wyliczenia z ciągu?
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.
}
}
Pomysły?
Na podstawie opinii uzyskanych od społeczności, zdecydowałem się użyć rozszerzenia metody, które konwertuje ciąg do wyliczenia. Przyjmuje jeden parametr (domyślną wartość wyliczenia). Ta wartość domyślna zapewnia również typ, więc ogólne można wywnioskować i nie trzeba tego wyraźnie określać, używając <>. Metoda jest teraz skrócona do tego:
public static DeviceType DefaultDeviceType
{
get
{
return GetSetting("DefaultDeviceType").ToEnum(DeviceType.IPhone);
}
}
Bardzo fajne rozwiązanie, które można ponownie wykorzystać w przyszłości.
Bardzo fajnie, podoba mi się możliwość ustawienia domyślnego - prawdopodobnie skończę z używaniem tego. Dzięki. –
To jest dobre podejście. W zależności od wersji .NET, nowsza wersja Enum.TryParse pozwala zachować tę samą metodę, jednocześnie pozbywając się bloku try. – TechNeilogy
@ TechNeilogy Używam .net 3.5, nie widziałem metody TryParse - która musi być nowa z wersją 4.0? –