Sto cercando di restituire un valore Enumerazione fortemente tipizzato da una stringa. Sono sicuro che c'è un modo migliore per farlo. Questo sembra un po 'troppo codice per una cosa semplice come questa:Come restituire un valore Enum da una stringa?
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.
}
}
Idee?
Sulla base del feedback ricevuto dalla comunità, ho deciso di utilizzare un'estensione di metodo che converte una stringa in un'enumerazione. Prende un parametro (il valore di enumerazione predefinito). Questo valore predefinito fornisce anche il tipo, quindi il generico può essere dedotto e non è necessario specificarlo esplicitamente utilizzando <>. Il metodo è ora ridotta a questo:
public static DeviceType DefaultDeviceType
{
get
{
return GetSetting("DefaultDeviceType").ToEnum(DeviceType.IPhone);
}
}
soluzione molto freddo che può essere riutilizzato in futuro.
Very Cool, mi piace la possibilità di fornire un valore predefinito - probabilmente finirò per usarlo. Grazie. –
Questo è un buon approccio. A seconda della versione di .NET, il più recente Enum.TryParse consente di mantenere lo stesso metodo eliminando il blocco try. – TechNeilogy
@TechNeilogy Sto usando .net 3.5, non ho visto il metodo TryParse - che deve essere nuovo con 4.0? –