我从数据库中获得了一个Int16
值,并且需要将其转换为枚举类型。不幸的是,这个代码层完全不了解对象,只知道通过反射可以收集的内容。Convert.ChangeType并转换为枚举?
因此,它最终会调用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);
}
}
哎哟......我需要停下来试图回答这样的问题,我有我的咖啡前... – 2009-02-03 14:10:37
我现在看到,Console.WriteLine也位于无权访问枚举类型的图层中。我完全误解了。删除了我的(愚蠢的)答案。 – GvS 2009-02-03 15:47:12