2013-02-15 116 views
0

我的模型有一系列的setter和getters。一些制定者調用依賴於其他屬性的方法。這工作正常,因爲當在代碼中構造對象時,我控制設置屬性的順序。然而,在序列化/反序列化過程中,我遇到了一個問題,即在實際設置了property1之前,還會調用一個依賴於另一個屬性(稱爲property1)的方法的setter。System.Web.Script.Serialization.JavaScriptSerializer屬性反序列化的順序

當使用System.Web.Script.Serialization.JavaScriptSerializer進行反序列化時,有沒有辦法控制被調用的屬性設置器的順序?

public class MyClass 
{ 
    public String[] Property1 { get; set; } 

    private String[] _property2; 
    public string[] Property2 
    { 
     get { return _property2; } 
     set { _property2 = value; UpdateSomething(); UpdateSomething(); RaisePropertyChanged("Property2"); } 
    } 

    public void UpdateSomething() 
    { 
     Debug.Assert(Property1.Length == Property2.Length); <!--When deserializing, need Property1 set before property2 to avoid issues 
    } 
} 

感謝

+0

它是一個艱難的避免在這種情況下..唯一的方法來避免這一點,我可以看到是不是使用序列化或創建一個自定義deseerializer(我想避免)。在這種情況下,當一個屬性發生變化時,我想要做點什麼。如果我使用getter或setter,做這件事,競賽條件仍然存在。 – mike01010 2013-02-15 15:48:47

回答

0

我去的解決方案是創建一個只我要堅持或恢復領域的按比例縮小的模型持久化。真正的模型有一個重載的構造函數,它接受持久化模型並且可以從它恢復自己,從而允許我更多地控制屬性的初始化/設置。

相關問題