【发布时间】:2011-02-28 02:53:53
【问题描述】:
有什么方法可以像下面这样在 c# 中定义枚举?
public enum MyEnum : string
{
EnGb = "en-gb",
FaIr = "fa-ir",
...
}
好的,根据 erick 方法和链接,我正在使用它来检查提供的描述中的有效值:
public static bool IsValidDescription(string description)
{
var enumType = typeof(Culture);
foreach (Enum val in Enum.GetValues(enumType))
{
FieldInfo fi = enumType.GetField(val.ToString());
AmbientValueAttribute[] attributes = (AmbientValueAttribute[])fi.GetCustomAttributes(typeof(AmbientValueAttribute), false);
AmbientValueAttribute attr = attributes[0];
if (attr.Value.ToString() == description)
return true;
}
return false;
}
有什么改善吗?
【问题讨论】:
-
正如您从答案中看到的那样......除了基础知识之外,c# 中的枚举支持有点缺乏......尤其是您来自 C 或 C++ 世界。不要花太多时间试图让他们做他们真的不想做的事情。我有,所以你也没有:)