在我的项目中,我需要构建一个应该向后兼容的通用反序列化器。示例:XML 看起来像
<PolicyDef name = "sample" type="type1">
<Options ......>
</PolicyDef>
“类型”是枚举 - PolicyTypes 例如
public Enum PolicyTypes
{
type1 = 0,
type2 = 1
}
PolicyDef 类定义为
[XmlRoot("PolicyDef")]
public class PolicyDef
{
private string policyName;
private PolicyTypes policyType;
public PolicyDefinition()
{
}
[XmlAttribute]
public string Name
{
get
{
return this.policyName;
}
set
{
this.policyName = value;
}
}
[XmlAttribute]
public PolicyTypes Type
{
get
{
return this.policyType;
}
set
{
this.policyType = value;
}
}
}
这种方法的问题是,如果稍后我输入除类型 1 或类型 2 之外的任何类型,XMLDeserializer 将抛出异常。所以如果我有像
<PolicyDef name = "sample" type="type_new">
<Options ......>
</PolicyDef>
反序列化器将抛出错误,因为 type_new 无效。
我想知道是否有一种方法可以连接到反序列化器进程来捕获它并设置默认值而不是抛出错误。说如果有任何无效值,那么我会将其设置为“type1”
或者愿意接受有关如何处理此问题的建议
谢谢并恭祝安康