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