0

根据这篇文章,当序列化为 JSON 时,我希望在字段列表的顶部看到我的基类中的字段。但是,我看到列表底部的字段。排序在实际类本身中是正确的,但在层次结构中不正确。

正在发生的事情是它与班级正确排序,它正在做与我期望的完全相反的事情。我希望基类首先对其字段进行序列化。我不想使用 Order=X 属性,因为我的对象中有太多字段。

这是与此处描述的完全相反的行为:

http://msdn.microsoft.com/en-us/library/ms729813(v=vs.110).aspx

[DataContract]
public class MyBase {
  [DataMember]
  public long Id { get; set; }
}

[DataContract]
public class MyChild : MyBase { 
  [DataMember]
  public string Field1 { get; set; }
  [DataMember]
  public string Field2 { get; set; }
  [DataMember]
  public string Field3 { get; set; }
}

[DataContract]
public class MySecondChild : MyChild { 
  [DataMember]
  public string SecondField { get; set; }
}

序列化 MySecondChild 的实例时...

预期的

{ 
    "Id": 1,        
    "Field1": "f1",
    "Field2": "f2",
    "Field3": "f3",
    "SecondField": "s1"
}

实际的

{  
    "SecondField": "s1",      
    "Field1": "f1",
    "Field2": "f2",
    "Field3": "f3",
    "Id": 1
}
4

1 回答 1

0

为我工作:http: //pastebin.com/PqBEHf6g

{"Id":1,"Field1":"f1","Field2":"f2","Field3":"f3","SecondField":"s1"}
于 2013-11-15T16:04:06.347 回答