C#中反序列化枚举类型
C#中使用反射进行反序列化
PropertyInfo propertyInfo = huduanData.GetType().GetProperty(xmlPro[a].Name);
if (propertyInfo != null && xmlHuduan[i].InnerText != "")
{
propertyInfo.SetValue(huduanData, ConvertUtils.ConvertType(xmlPro[a].InnerText,propertyInfo.PropertyType) );
}
以上代码可以对数据对象 huduan 类型进行反序列化。将其中所有的字段的值给获取过来,并且按照反射反序列化回来。但是当字段类型为自定义的枚举的时候,就会提示 不能转换类型
解决办法
定义一个新的方法。判断该字段类型是否为 枚举如果是枚举将进行对应的转换否则使用系统默认的方法
public static class ConvertUtils
{
public static object ConvertType(object value, Type type)
{
if (type.IsEnum)
{
return Enum.Parse(type, value.ToString());
}
else
{
return Convert.ChangeType(value, type);
}
}
}
很赞哦! (0)