我正在编写一些代码来从数据库中读取值并将它们转换为对象。
我的对象有一些成员,其类型是自定义枚举。
我正在尝试这样的事情,以便将字符串变量转换为枚举:
var castTo = fieldInfo.PropertyType.GetType(); //returns a Type object, e.g. MyEnum
var parsedEnum = (castTo) Enum.Parse(castTo, valueFromSql);
问题是编译器不会接受包含Type对象的变量。
如果我使用枚举名称而不是castTo变量,则没有问题,但是需要在运行时定义它。
答案 0 :(得分:2)
你可以尝试:
var castTo = fieldInfo.PropertyType.GetType();
var parsedEnum = Convert.ChangeType(Enum.Parse(castTo, valueFromSql), castTo);
有关更改类型的更多信息,请访问:https://msdn.microsoft.com/en-us/library/system.convert.changetype(v=vs.110).aspx
对于数据库包含enum
中不存在的值的情况,还应该有一种解决方法。应用程序将崩溃,因为那时无法进行强制转换。