我的模特有一系列的二传手和吸气鬼。一些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
}
}
由于
答案 0 :(得分:0)
我采用的解决方案是创建一个缩小的可持续模型,只包含我想要保留或恢复的字段。真正的模型有一个重载的构造函数,它采用可持久化的模型并可以从中恢复自身。这样我就可以更好地控制属性的初始化/设置方式。