我从数据库中获得了一个 Int16
值,并且需要将其转换为枚举类型。不幸的是,这是在一个代码层中完成的,该层仅通过反射了解对象的非常少的信息。
因此,它最终调用了 Convert.ChangeType
,但会出现无效的强制转换异常。
我找到了一个我认为有点不妥的解决方法,像这样:
String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
有没有更好的方法,这样我就不必进行这个字符串操作了?
以下是一份简洁但完整的程序,如果有人需要进行实验,可以使用它:
using System;
public class MyClass
{
public enum DummyEnum
{
Value0,
Value1
}
public static void Main()
{
Int16 value = 1;
Type destinationType = typeof(DummyEnum);
String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
Console.WriteLine("" + value + " = " + enumValue);
}
}