Bir dizeden çok yazılan bir Enumeration değeri döndürmeye çalışıyorum. Eminim bunu yapmanın daha iyi bir yolu vardır. Bu böyle basit bir şey için çok fazla kod gibi görünüyor:Bir dizeden Enum değeri nasıl döndürülür?
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.
}
}
Fikirler?
Topluluktan aldığım geri bildirime dayanarak, bir dizeyi bir numaralandırmaya dönüştüren bir yöntem uzantısı kullanmaya karar verdim. Bir parametre alır (varsayılan numaralandırma değeri). Bu varsayılan da türünü sağlar, böylece jenerik çıkarılabilir ve <> kullanarak açıkça belirtilmesi gerekmez. Yöntem şu şekilde kısaltılmıştır: Gelecekte tekrar kullanılabilen çok hoş bir çözüm.
Çok Cool, Bir varsayılan sunma yeteneğini beğeniyorum - muhtemelen bunu kullanarak bitireceğim. Teşekkürler. –
Bu iyi bir yaklaşım. .NET sürümünüze bağlı olarak, yeni Enum.TryParse, try bloğundan kurtulurken aynı yöntemi saklamanıza izin verir. – TechNeilogy
@TechNeilogy Kullanıyorum. Net 3.5, TryParse yöntemini görmedin - bu 4.0 ile yeni olmalı? –