2016-12-08 23 views
0

我有一個基類爲什麼base class屬性在上一次被序列化?

public class ParentSystemInfo 
{ 
    private string _Version = "R8.1"; 

    public SystemInfo() 
    { 

     this.Version = _Version; 
    } 

    } 
    public string Version { 

     get { return _Version; } 
     set { _Version = value; } 
    }  
} 

我繼承它在另一個類

public class ChildSystemInfo : ParentSystemInfo 
{ 

    public ChildSystemInfo() :base() 
    { 

     this.MYInfo= new MYInfo(); 

    } 
    public string Name { get; set; } 
    public MYInfo MYInfo{ get; set; }  
} 

當我序列化這個類我沒有在啓動JSON的結束得到parent屬性。爲什麼會發生這種情況,我如何防止它發生。

+0

你爲什麼需要它在不同的順序?在軟件中閱讀tchem有問題嗎? – cichy

+0

是的,我需要先讓arent屬性出現。我需要理解爲什麼它的行爲如此以及如何修復它創建自定義類的aprat – pankaj

+0

您是否指的是序列化數據中的順序? –

回答

0

您可以使用Json屬性屬性來控制屬性被排序的順序。在這裏看到的文檔:http://www.newtonsoft.com/json/help/html/JsonPropertyOrder.htm

所以你會:

public class ParentSystemInfo 
{ 
    private string _Version = "R8.1"; 

    public SystemInfo() 
    { 
     this.Version = _Version; 
    } 

    // Setting the JsonProperty to be -1 will ensure it appears before 
    // all properties for which this attribute was not set. 
    [JsonProperty(Order = -1)] 
    public string Version { 
     get { return _Version; } 
     set { _Version = value; } 
    }  
} 
+0

來更改訂單。 – pankaj

+1

接下來,您的意思是在它之後嗎?以這種方式思考 - 對於您沒有指定順序的任何屬性,它將設置爲0.具有相同順序的屬性按照您不控制的順序進行序列化。否則,屬性會從最小的順序顯示到最大。因此,您可以將第一個屬性的順序設置爲-2,將第二個屬性設置爲-1,依此類推。 – PartlyCloudy

+0

我已經說過,訂單-2的屬性是第一個屬性,但是屬性爲-1。爲什麼它不是第二名? – pankaj