属性反序列化的System.Web.Script.Serialization.JavaScriptSerializer顺

本文关键字:Serialization JavaScriptSerializer Script Web 反序列化 System 属性 | 更新日期: 2023-09-27 17:59:25

我的模型有一系列的setter和getter。一些setter调用依赖于其他属性的方法。这很好,因为在代码中构造对象时,我控制属性的设置顺序。然而,在序列化/反序列化过程中,我遇到了一个问题,即在实际设置property1之前,运行一个同时调用依赖于另一个属性(比如property1)的方法的setter。

在使用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
    }
}

感谢

属性反序列化的System.Web.Script.Serialization.JavaScriptSerializer顺

我采用的解决方案是创建一个缩小的可持久化模型,只包含我想要持久化或恢复的字段。真正的模型有一个重载的构造函数,它接受持久性模型,并可以从中恢复自己。从而使我能够更好地控制如何初始化/设置属性。