C# XML属性值无法按预期解析为Enum枚举类型问题咨询
核心问题
你的属性和XML节点的映射配置不匹配,导致XML序列化器无法读取到正确的枚举值:
- 你在
DynamicFieldParameter类的ValueTypeID属性上标注了[XmlAttribute("ParameterValueType")],这个配置的含义是:序列化/反序列化时,该属性对应XML节点里名为ParameterValueType的属性 - 但你实际要解析的XML里,该属性的名称是
ValueTypeID,和配置的名称完全对不上,序列化器找不到对应值就会自动使用枚举的默认值(默认取枚举定义的第一个成员,也就是值为0的Conditional)
你枚举上的[XmlEnum]配置本身是正确的,只要属性映射关系修正后,XML里的字符串"1"会正常解析为Static枚举值。
解决方法
二选一即可:
- 修改属性的
XmlAttribute配置,和XML实际属性名匹配:
// 写法1:省略参数,默认会用属性名ValueTypeID作为XML属性名 [XmlAttribute] public ParameterValueType ValueTypeID { get; set; } // 写法2:显式指定对应XML属性名 [XmlAttribute("ValueTypeID")] public ParameterValueType ValueTypeID { get; set; }
- 如果你需要保留
ParameterValueType作为映射名,就把XML里的属性名从ValueTypeID="1"改成ParameterValueType="1"。
内容的提问来源于stack exchange,提问作者tRuEsAtM
相关产品推荐
相关产品推荐

