使用DataContractSerializer时,是否可以初始化只读字段?

Eri*_* J. 10 c# initialization datacontractserializer

DataContractSerializer 反序列化时不调用构造函数或调用字段初始值设定项:

DataContractSerializer不调用我的构造函数?

反序列化时,C#类中的字段初始化程序不运行

使用DataContractSerializer时设置属性的初始值

是否可以readonly在对象反序列化后初始化字段?我必须放弃该语言功能才能使用DataContractSerializer吗?

svi*_*ick 4

我不确定这样做是个好主意,但您可以readonly使用反射更改构造函数或字段初始值设定项外部字段的值。

把类似的东西:

typeof(MyType).GetField("Field").SetValue(this, value);
Run Code Online (Sandbox Code Playgroud)

在你的反序列化回调中应该可以工作。