grm*_*hel 5 c# xml-deserialization
我正在尝试反序列化一个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("") { }
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试反序列化后面的字符串(注意Plane作为枚举值):
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><MyClass><ID>1234567890123456789</ID><EnumValue>Plane</EnumValue></MyClass>
Run Code Online (Sandbox Code Playgroud)
然后我的反序列化将抛出异常,甚至在它为EnumValue命中我的公共字段之前,会出现以下异常消息:
实例验证错误:'Plane'不是EnumValue的有效值
是否可以返回EnumValue的默认值,如果我尝试在XML中解析的值不支持EnumValue?例如.对于此处提供的XML字符串,EnumValue应设置为"Unknown".
[XmlIgnore]
public MyEnum EnumValueReal
{
get { return _myEnum; }
set { _myEnum = value; }
}
public string EnumValue
{
get
{
return EnumValueReal.ToString();
}
set
{
MyEnum result = MyEnum.Unknown;
Enum.TryParse(value, true, out result);
EnumValueReal = result;
}
}
Run Code Online (Sandbox Code Playgroud)