【发布时间】:2011-02-13 03:15:47
【问题描述】:
如果我使用DataContractSerializer 对类进行序列化和反序列化,如何控制未序列化的属性的初始值?
考虑下面的Person 类。它的数据协定设置为序列化FirstName 和LastName 属性,但不序列化IsNew 属性。我希望 IsNew 初始化为 TRUE,无论新 Person 是作为新实例实例化还是从文件中反序列化。
这很容易通过构造函数来完成,但据我所知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;
}
}
【问题讨论】:
标签: c# .net initialization default-value datacontractserializer