假设您的代码从外部源接收实例,并且您无法控制实例的创建方式。该实例未实现INotifyPropertyChanged
。是否有可以传递给它的适配器,如:
var adapter = new ChangeNotifierAdapter( instance );
这样适配器实现了INotifyPropertyChanged,然后会针对PropertyChanged
的所有属性更改提升其instance
事件?
答案 0 :(得分:0)
如果您可以保证对实例的所有更改都将通过您的包装器进行,那么您可以使用代理 - dynamic one或在设计时生成的代理(nb:如果您还需要公开具体的话)类而不是接口它必须是一个动态代理。)
如果不是这样(或者即使它是,但是对一个属性的更改会影响另一个属性的值),那么实现此目的的唯一方法是通过轮询。包装器必须定期轮询对象的所有属性,确定哪些已更改并相应地引发事件。这很麻烦,可能是移动设备上严重的电池消耗。
当然两个都很糟糕。映射到实现它的对象通常是更好的解决方案。