C# 如何订购数据成员';是否使用继承的或子类化的对象在DataContract序列化程序中设置s/properties?

C# 如何订购数据成员';是否使用继承的或子类化的对象在DataContract序列化程序中设置s/properties?,c#,serialization,datacontract,datacontractserializer,C#,Serialization,Datacontract,Datacontractserializer,我遇到一个问题,DataContract序列化程序没有按所需顺序呈现数据成员或属性。我有一个数据契约修饰类,它继承自另一个数据契约修饰类,例如,它是父类的子类,并且我指定了特定属性的排序顺序 我不知道是否有一个特殊的配置设置,我需要利用或如何实现这一点,即使它需要一个自定义排序例程 基本上,我希望在序列化输出时,“ParentResource”中的某些属性出现在“ChildResource”中的某些属性之前 序列化表示中的理想属性顺序: -父母财产1 -父母财产2 -儿童财产1 -儿童财产2 序

我遇到一个问题,DataContract序列化程序没有按所需顺序呈现数据成员或属性。我有一个数据契约修饰类,它继承自另一个数据契约修饰类,例如,它是父类的子类,并且我指定了特定属性的排序顺序

我不知道是否有一个特殊的配置设置,我需要利用或如何实现这一点,即使它需要一个自定义排序例程

基本上,我希望在序列化输出时,“ParentResource”中的某些属性出现在“ChildResource”中的某些属性之前

序列化表示中的理想属性顺序: -父母财产1 -父母财产2 -儿童财产1 -儿童财产2

序列化表示中的当前属性顺序: -儿童财产1 -儿童财产2 -父母财产1 -父母财产2

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; }
}

}

您需要的是
DataMember.Order

public class ChildResource : ParentResource
{
    [DataMember(EmitDefaultValue = false, Order = 2)]
    public int ChildProperty1 { get; set; }

    [DataMember(EmitDefaultValue = false, Order = 3)]
    public int ChildProperty2 { get; set; } 
}

您需要的是
DataMember.Order

public class ChildResource : ParentResource
{
    [DataMember(EmitDefaultValue = false, Order = 2)]
    public int ChildProperty1 { get; set; }

    [DataMember(EmitDefaultValue = false, Order = 3)]
    public int ChildProperty2 { get; set; } 
}