DataContract
和DataMember
属性也可以用于将对象序列化为文件和反序列化,通过使用DataContractSerializer
. 假设我们有一个具有以下私有字段和公共属性的类。
public class MyClass
{
private int positiveValue;
public int PositiveValue
{
get { return positiveValue; }
set
{
if (value < 1)
throw new ArgumentOutOfBoundException(...);
positiveValue = value;
}
}
}
现在假设我们有一个包含先前序列化对象状态的 XML 文件,并假设用户修改了这个文件,为属性指定了不正确的值(即非正值)PositiveValue
。在反序列化过程中会抛出异常,因为文件中的值无效。
假设我们要反序列化MyClass
文件中的对象列表:如果某个对象无效,则会引发异常。是否可以确保DataContractSerializer
忽略无效对象?此外,考虑到刚才解释的问题,在应用了 DataMember 属性的属性中抛出异常是一种好习惯吗?