C# 在外部参数更改时通知更改

C# 在外部参数更改时通知更改,c#,.net,inotifypropertychanged,C#,.net,Inotifypropertychanged,我需要将notify change事件附加到外部类中的封装参数。我通常会实现INotifyPropertyChanged,但我无法编辑外部类。解决这个问题的正确方法是什么?这将很难做到。最好的选择似乎是派生该类,但您需要将所有属性标记为virtual。当你无法控制课堂时,这似乎不太可能 如果您是唯一调用该类的人,那么还可以创建一个模仿该类行为的包装器。您可以自己创建属性并实现INotifyPropertyChanged。但是,您无法收到更改为内部对象的通知 如果这是您的最佳选择,您还可以实现隐式

我需要将notify change事件附加到外部类中的封装参数。我通常会实现
INotifyPropertyChanged
,但我无法编辑外部类。解决这个问题的正确方法是什么?

这将很难做到。最好的选择似乎是派生该类,但您需要将所有属性标记为
virtual
。当你无法控制课堂时,这似乎不太可能

如果您是唯一调用该类的人,那么还可以创建一个模仿该类行为的包装器。您可以自己创建属性并实现
INotifyPropertyChanged
。但是,您无法收到更改为内部对象的通知


如果这是您的最佳选择,您还可以实现隐式转换运算符,这样您就可以像正在包装的类一样传入类。

蛮力方法可以是使用计时器,该计时器每(比如)一次都会查看该属性的值1秒,并在属性值与上次读取的值不同时通知您。计时器使用自己的轻量级线程,因此这也不会对资源造成很大负担。看看您所处的艰难处境,这似乎是唯一可行的选择。

是否只有您更新该类的实例,或者它们也在外部更新?您可以从该类继承,然后在派生版本上实现INotifyPropertyChanged,然后使用该类而不是原始类?@dotNET该属性必须是
virtual
,才能起作用。@MarcelN。封装的参数只包含一个getter。该参数仅由外部类更新