我正在尝试创建一个透明地加载类并将类保存到持久存储形式的类。
目前我正在使用模式:
get
{
return _data;
}
set
{
//Do change logic
_data = value;
}
这适用于首次设置_data对象时,因为正在调用set访问器。但是,如果使用get,则返回引用。未检测到通过此引用对数据对象属性所做的任何更改,因为调用set访问器不会。
我会在get访问器中调用持久性逻辑,但在此阶段尚未进行更改。我还考虑使用析构函数在终止时保存所有更改,但我认为在析构函数中执行阻塞操作是不好的做法?
是否有更好的模式或方法可以调用此方案的更改逻辑?
答案 0 :(得分:3)
通常,我会有一个“保存”功能来执行此操作(在点击或计时器或其他任何方面)。这样就可以限制你的命中率。
如果确实希望保存每个属性更改,请考虑让受影响的对象实现INotifyPropertyChanged
。它通常用于绑定,但您也可以订阅事件!在事件处理程序中,您可以检查已更改的属性的名称并运行保存逻辑。