2
A
回答
5
如何:
enum E
{
A = 2,
B = 3
}
public static string GetLiteral<T>(object value)
{
return Enum.GetName(typeof(T), value);
}
static void Main(string[] args)
{
Console.WriteLine(GetLiteral<E>(2));
Console.WriteLine(GetLiteral<E>(3));
}
3
我會寫一個擴展方法來做到如
using System.ComponentModel;
public enum StatusResult
{
[Description("Success")]
Success,
[Description("Failure...")]
Failure
}
public static class AttributesHelperExtension
{
public static string ToDescription(this Enum value)
{
DescriptionAttribute[] da = (DescriptionAttribute[])(value.GetType().GetField(value.ToString())).GetCustomAttributes(typeof(DescriptionAttribute), false);
return da.Length > 0 ? da[0].Description : value.ToString();
}
public static T ToEnum<T>(this string stringValue, T defaultValue)
{
foreach (T enumValue in Enum.GetValues(typeof(T)))
{
DescriptionAttribute[] da = (DescriptionAttribute[])(typeof(T).GetField(enumValue.ToString())).GetCustomAttributes(typeof(DescriptionAttribute), false);
if (da.Length > 0 && da[0].Description == stringValue)
return enumValue;
}
return defaultValue;
}
}
我們稱這種使用
string value = StatusResult.Failure.ToDescription();
3
這當你知道價值,並且類型枚舉,但你想獲得枚舉實例重新被匹配值..
static T ConvertToEnum<T>(object value)
{
return (T) Enum.Parse(typeof(T), Enum.GetName(typeof(T), value));
}
static void Main(string[] args)
{
Gender g1 = ConvertToEnum<Gender>(0); //Male
Gender g2 = ConvertToEnum<Gender>(1); //Female
Gender g3 = ConvertToEnum<Gender>(2); //*BANG* exception
}
1
我遇到了這個方法,我用前一陣子使用。
它採用了擴展,並應始終返回enum
public static T ToEnum<T>(this string type, T defaultEnum)
{
T holder;
try
{
holder = (T)Enum.Parse(typeof(T), type);
}
catch
{
holder = defaultEnum;
}
return holder;
}
+0
即將寫出非常相似的答案,你可以從參數中取出類型 – CMS
相關問題
- 1. initBinder方法不被稱爲從字符串轉換爲枚舉
- 2. Ada要枚舉轉換的字符串
- 3. 轉換整數枚舉字符串
- 4. 字符串轉換枚舉在C#中
- 5. 將字符串轉換爲枚舉?
- 6. 枚舉轉換爲字符串
- 7. 轉換成字符串枚舉
- 8. 枚舉拒絕轉換爲字符串
- 9. 將字符串轉換爲枚舉?
- 10. 字符串轉換爲枚舉的枚舉名
- 11. NSStringEncoding - 枚舉到字符串枚舉
- 12. 枚舉到字符串C++
- 13. 字符串到枚舉C++
- 14. 字符串枚舉
- 15. 到處尋找一個枚舉被轉換成字符串
- 16. 如何編寫從字符串到枚舉的良好轉換?
- 17. 將字符串轉換到一個枚舉在C#
- 18. 轉換枚舉來枚舉
- 19. 通用枚舉方法
- 20. 將字符串字段轉換爲Swashbuckle中的枚舉字段
- 21. 將文化特定的枚舉DisplayName字符串轉換爲枚舉
- 22. 有沒有簡單的方法將這些字符串值轉換爲枚舉?
- 23. 將枚舉轉換爲字符串的最佳實踐方法是什麼?
- 24. 有沒有簡單的方法將C++枚舉轉換爲字符串?
- 25. 替換字符串與枚舉枚舉生成自動protobuf的
- 26. 我如何將字符串轉換爲枚舉值用C
- 27. 使用TValue將字符串轉換爲枚舉類型?
- 28. 通過枚舉名字符串獲取枚舉值
- 29. 斯卡拉轉換字符串到枚舉值的安全方式
- 30. 將數字轉換爲在bash中的字符串枚舉
myEnum.ToString()不會做你想要的? –
你是否在尋找['Enum.GetName'](http://msdn.microsoft.com/en-us/library/system.enum.getname.aspx)? – V4Vendetta
@ V4Vendetta.do你碰巧知道Enum.GetName和enum.ToString()之間的區別? – user9969