调整现有的POCO实例以实现INotifyPropertyChanged

时间:2013-01-09 23:07:32

标签: inotifypropertychanged

假设您的代码从外部源接收实例,并且您无法控制实例的创建方式。该实例未实现INotifyPropertyChanged。是否有可以传递给它的适配器,如:

var adapter = new ChangeNotifierAdapter( instance );

这样适配器实现了INotifyPropertyChanged,然后会针对PropertyChanged的所有属性更改提升其instance事件?

1 个答案:

答案 0 :(得分:0)

如果您可以保证对实例的所有更改都将通过您的包装器进行,那么您可以使用代理 - dynamic one或在设计时生成的代理(nb:如果您还需要公开具体的话)类而不是接口它必须是一个动态代理。)

如果不是这样(或者即使它是,但是对一个属性的更改会影响另一个属性的值),那么实现此目的的唯一方法是通过轮询。包装器必须定期轮询对象的所有属性,确定哪些已更改并相应地引发事件。这很麻烦,可能是移动设备上严重的电池消耗。

当然两个都很糟糕。映射到实现它的对象通常是更好的解决方案。