If I am serializing and later deserializing a class using DataContractSerializer
how can I control the initial values of properties that were not serialized?
Consider the Person
class below. Its data contract is set to serialize the FirstName
and LastName
properties but not the IsNew
property. I want IsNew
to initialize to TRUE whether a new Person is being instantiate as a new instance or being deserialized from a file.
This is easy to do through the constructor, but as I understand it DataContractSerializer
does not call the constructor as they could require parameters.
[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;
}
}
Actually the correct way of doing it is by using the OnDeserializing attribute (notice the "ing" suffix). The method marked with this attribute is called before the member values are deserialized.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With