我正在尝试使用Enum.ToObject方法将值解析为枚举。但是,当我使用无效参数时,似乎总是返回默认值,例如0。
[TestMethod]
public void ShouldFail()
{
byte testValue = 68;
TestEnum testEnumObject = (TestEnum)Enum.ToObject(typeof(TestEnum), testValue);
//how testEnumObject is 68? dosent make sence.
Assert.AreEqual(testEnumObject, TestEnum.A);
}
public enum TestEnum : byte
{
A = 1,
B = 2,
C = 3
}
如果不能用枚举赋值以引起异常,该如何使函数起作用?
答案 0 :(得分:1)
将指定的整数值转换为枚举成员。
ToObject(Type, Int16)
方法将值转换为枚举 其潜在价值是价值的成员。 请注意,转化 即使value超出enumType成员的范围,也会成功。至 确保该值是enumType的有效基础值 枚举,将其传递给IsDefined
方法
这说明了一切,让我们来看一下已定义的
Enum.IsDefined(Type, Object) Method
返回一个布尔值,该布尔值指示给定的整数值或其名称 作为字符串,存在于指定的枚举中。
到目前为止听起来不错!
用法
if(!Enum.IsDefined(typeof(YourLevelyEnum), 4)
{
throw InvalidOperationException("OMG! Not.. even.. valid..");
}
答案 1 :(得分:0)
//using System;
//using System.Linq;
if (!Enum.GetValues(typeof(TestEnum)).Cast<byte>().Contains(testValue))
{
throw new InvalidCastException();
}