如果我使用DataContractSerializer
序列化并稍后反序列化一个类,如何控制未序列化的属性的初始值?当使用DataContractSerializer时设置属性的初始值
请考虑下面的Person
类。其数据合同设置为序列化FirstName
和LastName
属性,但不包括IsNew
属性。我想要IsNew
初始化为TRUE,不管新实例是作为新实例实例化还是从文件反序列化。
这很容易通过构造函数来完成,但据我所知,DataContractSerializer
不会调用构造函数,因为它们可能需要参数。
[DataContract(Name="Person")]
public class Person
{
[DataMember(Name="FirstName")]
public string FirstName { get; set; }
[DataMember(Name = "LastName")]
public string LastName { get; set; }
public bool IsNew { get; set; }
public Person(string first, string last)
{
this.FirstName = first;
this.LastName = last;
this.IsNew = true;
}
}
由于Pavel提到它应该是[OnDeserializing],否则每次的值都会被覆盖,而不是一次(当它缺失时)。 – 2017-01-17 11:52:59