我想從字符串中返回一個強類型的枚舉值。我相信有更好的方法來做到這一點。這似乎太像這樣簡單的代碼太多代碼:如何從字符串返回枚舉值?
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.
}
}
想法?
根據我從社區獲得的反饋,我決定使用將字符串轉換爲枚舉的方法擴展。它需要一個參數(默認的枚舉值)。該默認值還提供了類型,因此可以推斷泛型,並且不需要使用<>來明確指定。該方法現在縮短爲:
public static DeviceType DefaultDeviceType
{
get
{
return GetSetting("DefaultDeviceType").ToEnum(DeviceType.IPhone);
}
}
非常酷的解決方案,可以在未來重複使用。
非常酷,我喜歡提供默認的能力 - 我可能最終會使用這個。謝謝。 – 2010-07-28 18:21:16
這是一個好方法。根據你的.NET版本,更新的Enum.TryParse可以讓你在擺脫try塊時保持同樣的方法。 – TechNeilogy 2010-07-28 18:23:38
@TechNeilogy我正在使用.net 3.5,沒有看到TryParse方法 - 4.0必須是新的? – 2010-07-28 18:31:20