Если я сериализую, а затем десериализую класс, используя DataContractSerializer
, как я могу контролировать начальные значения свойств, которые не были сериализованы?
Рассмотрим класс Person
ниже. Его контракт данных настроен на сериализацию свойств FirstName
и LastName
, но не свойства IsNew
. Я хочу, чтобы IsNew
инициализировался в ИСТИНА, независимо от того, создается ли новый объект в качестве нового экземпляра или десериализуется из файла.
Это легко сделать с помощью конструктора, но, насколько я понимаю, 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;
}
}