DataContractSerializer
does not call a constructor or invoke field initializers when deserializing:
DataContractSerializer doesn't call my constructor?
Field Initializer in C# Class not Run when Deserializing
Setting the initial value of a property when using DataContractSerializer
Is it possible to initialize a readonly
field after object deserialization? Must I abandon that language feature in order to use DataContractSerializer?
I'm not sure doing this is a good idea, but you can change the value of a readonly
field outside the constructor or field initializer by using reflection.
Putting something like:
typeof(MyType).GetField("Field").SetValue(this, value);
in your deserialization callback should work.