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