我正在寻找一个解决方案来获取枚举的完整字符串。
示例:
Public Enum Color
{
Red = 1,
Blue = 2
}
Color color = Color.Red;
// This will always get "Red" but I need "Color.Red"
string colorString = color.ToString();
// I know that this is what I need:
colorString = Color.Red.ToString();
那么有解决方案吗?
答案 0 :(得分:10)
public static class Extensions
{
public static string GetFullName(this Enum myEnum)
{
return string.Format("{0}.{1}", myEnum.GetType().Name, myEnum.ToString());
}
}
用法:
Color color = Color.Red;
string fullName = color.GetFullName();
注意:我认为GetType().Name
比GetType().FullName
答案 1 :(得分:1)
试试这个:
Color color = Color.Red;
string colorString = color.GetType().Name + "." + Enum.GetName(typeof(Color), color);
答案 2 :(得分:1)
适用于每个枚举的快速变体
public static class EnumUtil<TEnum> where TEnum : struct
{
public static readonly Dictionary<TEnum, string> _cache;
static EnumUtil()
{
_cache = Enum
.GetValues(typeof(TEnum))
.Cast<TEnum>()
.ToDictionary(x => x, x => string.Format("{0}.{1}", typeof(TEnum).Name, x));
}
public static string AsString(TEnum value)
{
return _cache[value];
}
}
答案 3 :(得分:0)
我不知道这是不是最好的方法,但它有效:
string colorString = string.Format("{0}.{1}", color.GetType().FullName, color.ToString())
答案 4 :(得分:0)
colorString = color.GetType().Name + "." + color.ToString();
答案 5 :(得分:0)
您可以使用扩展方法。
public static class EnumExtension
{
public static string ToCompleteName(this Color c)
{
return "Color." + c.ToString();
}
}
现在,下面的方法将返回“Color.Red”。
color.ToCompleteName();
http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx