在我的MVC项目中,我有MyEnum:
public enum MyEnum
{
a,
b,
c,
d
}
我也有课:
public class MyClass
{
public MyEnum SelectType { get; set; }
public Enum[] NotSupportedTypes{ get; set; }
}
在NotSupportedTypes
课程中,我可以使用仅 Enum[]
类型。
当我创建课程MyClass
的对象时,如何在NotSupportedTypes
中检查只有类型为MyEnum
的枚举?
var model = new MyClass();
//good
model.NotSupportedTypes = new Enum[] { MyEnum.a }
//bad
model.NotSupportedTypes = new Enum[] { SomeOtherEnum.a }
答案 0 :(得分:1)
您可以在属性中进行检查,例如使用Array.TrueForAll
:
private Enum[] _NotSupportedTypes;
public Enum[] NotSupportedTypes
{
get { return _NotSupportedTypes; }
set {
if (!Array.TrueForAll(value, x => x.GetType() == typeof(MyEnum)))
throw new ArgumentException("All enums must be MyEnum");
_NotSupportedTypes = value;
}
}
正如Xanatos所提到的,这不会保护您免受阵列变化的影响。因此,您可以稍后使用不同的枚举类型替换其中的一个MyEnum
。数组不是只读的。
那么为什么不首先使用MyEnum[]
?
答案 1 :(得分:0)
e.preventDefault();