检测属性的更改

时间:2014-06-19 00:37:20

标签: c# properties

我正在尝试创建一个透明地加载类并将类保存到持久存储形式的类。

目前我正在使用模式:

get
{
  return _data;
}
set
{
    //Do change logic
    _data = value;
}

这适用于首次设置_data对象时,因为正在调用set访问器。但是,如果使用get,则返回引用。未检测到通过此引用对数据对象属性所做的任何更改,因为调用set访问器不会。

我会在get访问器中调用持久性逻辑,但在此阶段尚未进行更改。我还考虑使用析构函数在终止时保存所有更改,但我认为在析构函数中执行阻塞操作是不好的做法?

是否有更好的模式或方法可以调用此方案的更改逻辑?

1 个答案:

答案 0 :(得分:3)

通常,我会有一个“保存”功能来执行此操作(在点击或计时器或其他任何方面)。这样就可以限制你的命中率。

如果确实希望保存每个属性更改,请考虑让受影响的对象实现INotifyPropertyChanged。它通常用于绑定,但您也可以订阅事件!在事件处理程序中,您可以检查已更改的属性的名称并运行保存逻辑。