首先:
C#中的枚舉值不支持bool值。 所以它應該是整數。 如果我們將枚舉的2個屬性設置爲相同的值,我們可以認爲其中一個丟失了。 從我的理解你實際上正在試圖做的是: 不知何故標誌着枚舉的2個屬性是平等的。
我的建議:
public enum MyEnum
{
[Description("true")]
A = 1,
[Description("false")]
B = 2,
[Description("true")]
C = 3
}
擴展枚舉將返回布爾
public static class EnumEx
{
public static bool GetDescriptionAsBool(this Enum value)
{
FieldInfo field = value.GetType().GetField(value.ToString());
DescriptionAttribute attribute
= Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute))
as DescriptionAttribute;
if(attribute == null)
{
//throw new SomethingWentWrongException();
}
return bool.Parse(attribute.Description);
}
}
您能正常切換的結果,並隨時可以檢查你有什麼枚舉鈴標誌只是打電話的GetDescriptionAsBool方法那個例子。
爲什麼形式參數「sn」但開關控制器是「s」?這是一個錯字,還是你打算他們不同? – 2011-04-16 14:53:17