如果我使用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