【问题标题】:Notify Changes on external parameter change外部参数更改时通知更改
【发布时间】:2014-08-12 08:53:17
【问题描述】:

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

【问题讨论】:

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

标签: c# .net inotifypropertychanged


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    蛮力方法可能是使用一个计时器,该计时器每隔(例如)1 秒查看该属性的值,并在属性值与之前读取的不同时通知您。计时器使用自己的轻量级线程,因此这也不应该对资源造成太大负担。考虑到您所处的困境,这似乎是唯一可行的选择。

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 1970-01-01
      • 2021-09-25
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多