Я не уверен, правильно ли я вас понял, но разве вы просто не хотите этого:
enum MyEnum
{
MyValue1,
MyValue2
}
class Test
{
public MyEnum MyProperty { get; set; }
}
Другим способом было бы определить свойство как string
или int
(или любой тип, на котором основано ваше перечисление) и проверить, является ли значение допустимым в соответствии с перечислением:
string _value;
public string MyProperty
{
get{return _value;}
set {
if (Enum.GetName(typeof(MyEnum), _value)==null)
throw new ArgumentException("Unknown Value")
_value=value;
}
}
Если вы задаете целочисленное свойство, вы можете использовать Enum.IsDefined()
, чтобы проверить, является ли целочисленное значение допустимым для этого перечисления.
Вы также можете рассмотреть возможность использования C # 4.0 кодовых контрактов .