使用Reflections我需要从ENums设置值

时间:2015-02-25 03:55:43

标签: c# enums

我有一个下面指定的枚举

  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;。

1 个答案:

答案 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;
                                }