How to order data member's/properties in the DataContract serializer with inherited or subclassed objects?
我遇到一个问题,即DataContract序列化程序未按所需顺序呈现数据成员或属性。我有一个数据合同装饰类,该类继承自另一个数据合同装饰类,例如它是父项的子项,我指定特定属性的排序顺序。
我不确定是否需要使用特殊的配置设置或如何完成此设置,即使它需要自定义排序例程也是如此。
基本上,我希望输出序列化时," ParentResource "中的某些属性出现在" ChildResource "中的某些属性之前。
序列化表示形式中的理想属性排序:
-ParentProperty1
-ParentProperty2
-ChildProperty1
-ChildProperty2
当前属性在序列化表示中的顺序:
-ChildProperty1
-ChildProperty2
-ParentProperty1
-ParentProperty2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | using System.Runtime.Serialization; namespace DataContractSerializationOrderingError { [DataContract] [KnownType(typeof(ParentResource))] public class ChildResource : ParentResource { [DataMember(EmitDefaultValue = false)] public int ChildProperty1 { get; set; } [DataMember(EmitDefaultValue = false)] public int ChildProperty2 { get; set; } } [DataContract] public class ParentResource { [DataMember(EmitDefaultValue = false, Order = 0)] public int ParentProperty1 { get; set; } [DataMember(EmitDefaultValue = false, Order = 1)] public int ParentProperty2 { get; set; } } |
} ??
您想要的是
1 2 3 4 5 6 7 8 | public class ChildResource : ParentResource { [DataMember(EmitDefaultValue = false, Order = 2)] public int ChildProperty1 { get; set; } [DataMember(EmitDefaultValue = false, Order = 3)] public int ChildProperty2 { get; set; } } |