У меня возникла проблема, когда DataContract Serializer не отображает элементы данных или свойства в нужном порядке. У меня есть класс, украшенный контрактом данных, который наследуется от другого класса, украшенного контрактом данных, например. это дочерний элемент родителя, и я указываю порядок сортировки для определенных свойств.
Я не уверен, есть ли специальный параметр конфигурации, который мне нужно использовать, или как это сделать, даже если для этого требуется специальная процедура сортировки.
В основном я хочу, чтобы определенные свойства из «ParentResource» появлялись перед некоторыми свойствами из «ChildResource» при сериализации вывода.
Идеальный порядок свойств в сериализованном представлении: - ParentProperty1 - ParentProperty2 - ChildProperty1 - ChildProperty2
Текущий порядок свойств в сериализованном представлении: - ChildProperty1 - ChildProperty2 - ParentProperty1 - ParentProperty2
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; }
}
}