Прежде всего:
Перечисления в C # не поддерживают bool как значение.Так должно быть целыми числами.Если мы установим 2 свойства enum в одно и то же значение, мы можем считать одно из них потерянным.Насколько я понимаю, что вы на самом деле пытаетесь сделать так: каким-то образом отметьте, что 2 свойства enum равны.
Мое предложение:
public enum MyEnum
{
[Description("true")]
A = 1,
[Description("false")]
B = 2,
[Description("true")]
C = 3
}
Расширение для Enum, которое будет возвращать bool
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 этого экземпляра.