DataContractSerializer,其中缺少的[DataMember]属性被视为“可选”

时间:2019-07-23 10:29:54

标签: c# .net serialization datacontractserializer netdatacontractserializer

情况:我有一个无法自动编辑的对象。该对象使用DataContractSerializer进行序列化。当前,每个字段都以required处理,因为缺少[DataContract][DataMember]属性(我在.NET 4.7上)。

我需要什么: 我仍然需要能够解析旧的序列化数据,但是将每个字段都作为可选字段来处理。我的想法是覆盖DataContractSerializerClassDataContract并自己处理ImportDataMembers()函数,并在没有属性的字段上将EmitDefaultValue设置为true。但是ClassDataContract被标记为sealed,我没有主意。

这是指向ClassDataContract的链接,在其中处理默认值的设置:https://referencesource.microsoft.com/#System.Runtime.Serialization/System/Runtime/Serialization/ClassDataContract.cs,970

0 个答案:

没有答案