【发布时间】:2014-04-10 08:00:10
【问题描述】:
我正在尝试反序列化一个 XML 字符串,其中元素的值不在我的 Enum 值的范围内。
Public enum MyEnum
{
Unknown,
Car,
Bicycle,
Boat
}
[SerializableAttribute()]
public class MyClass
{
private string _id;
private MyEnum _myEnum;
public string ID
{
get { return _id; }
set { _id = value; }
}
public MyEnum EnumValue
{
get { return _myEnum; }
set { _myEnum = value; }
}
public MyClass(string id)
{
this._id = id;
}
public MyClass() : this("") { }
}
如果我尝试反序列化以下字符串(注意 Plane 作为枚举值):
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><MyClass><ID>1234567890123456789</ID><EnumValue>Plane</EnumValue></MyClass>
然后我的反序列化将抛出一个异常,甚至在它到达我的 EnumValue 的公共字段之前,并带有以下异常消息:
实例验证错误:'Plane' 不是 EnumValue 的有效值
如果我尝试在 XML 中解析的值不支持作为 EnumValue,是否可以返回 EnumValue 的默认值? 例如。对于此处提供的 XML 字符串,EnumValue 应设置为“未知”。
【问题讨论】: