情况:我有一个无法自动编辑的对象。该对象使用DataContractSerializer
进行序列化。当前,每个字段都以required
处理,因为缺少[DataContract]
和[DataMember]
属性(我在.NET 4.7上)。
我需要什么:
我仍然需要能够解析旧的序列化数据,但是将每个字段都作为可选字段来处理。我的想法是覆盖DataContractSerializer
和ClassDataContract
并自己处理ImportDataMembers()
函数,并在没有属性的字段上将EmitDefaultValue
设置为true
。但是ClassDataContract被标记为sealed
,我没有主意。
这是指向ClassDataContract的链接,在其中处理默认值的设置:https://referencesource.microsoft.com/#System.Runtime.Serialization/System/Runtime/Serialization/ClassDataContract.cs,970