【发布时间】:2021-01-11 01:24:21
【问题描述】:
我从数据库中获得了一个Int16 值,需要将其转换为枚举类型。不幸的是,这是在代码层中完成的,除了可以通过反射收集到的对象之外,它对对象知之甚少。
因此,它最终调用 Convert.ChangeType 失败并出现无效的强制转换异常。
我发现了一个我认为很臭的解决方法,如下所示:
String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
有没有更好的方法,让我不用通过这个String操作?
这是一个简短但完整的程序,如果有人需要进行实验,可以使用它:
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);
}
}
【问题讨论】:
-
哎哟...在我喝完咖啡之前,我需要停止尝试回答这样的问题...
-
我现在看到了,Console.WriteLine 也在一个无法访问枚举类型的层中。我完全误解了。删除了我的(愚蠢的)答案。
标签: c# enums changetype