我有一个下面指定的枚举
public enum AdvisorType {
CAB,
LA,
RSL,
}
我的调用XML就像这样
<AdvisorType>CAB</AdvisorType>.
我有一个解析器,可以为这个对象设置值。我知道序列化很容易,但我不是在进行序列化。
if (prop.PropertyType.IsEnum)
{
object o1 = Convert.ChangeType(childElement.Value, typeof(Object));
Object valueSet = Enum.ToObject(prop.PropertyType, o1);
prop.SetValue(obj, valueSet, null);
}
else
{
prop.SetValue(obj, Convert.ChangeType(childElement.Value, prop.PropertyType), null);
break;
}
Enum.Toobject抛出一个异常为&#34;传入的值必须是枚举基础或枚举的基础类型,例如Int32。&#34;。
答案 0 :(得分:0)
像这样更改它并且可以正常工作
if (prop.PropertyType.IsEnum)
{
Object valueSet = Enum.Parse(prop.PropertyType, childElement.Value, true);
prop.SetValue(obj, valueSet, null);
}
else
{
prop.SetValue(obj, Convert.ChangeType(childElement.Value, prop.PropertyType), null);
break;
}