C# - 拦截子类中的属性更改

Mar*_* S. 7 .net c# .net-4.0 c#-4.0

我正在创建一个框架,在其中我提供基类,框架的实现者将从基类继承并提供其他属性和方法.在基类中,我希望有一种观察属性值何时更改的方法.该属性可以来自基类或任何子类.我知道通过反射,我可以从任何实例确定属性列表,但有没有办法可以跟踪属性更改值?

这是我所说的非常简单的例子:

public class BaseClass
{
    public string BaseClassProperty { get; set; }

    public void DoSomethingWhenEitherPropertyGetsChanged()
    {

    }
}

public class SubClass : BaseClass
{
    public string SubClassProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

DoSomethingWhenEitherPropertyGetsChanged当任何一个属性的值发生变化时,我该怎么做才能执行.

Ric*_*key 4

您可以用于notifypropertyweaver此目的。它完全符合您的要求。这是一个链接:

来自开源主页:

使用 IL 编织(通过http://www.mono-project.com/Cecil)将 INotifyPropertyChanged 代码注入到属性中。

  • 不需要属性
  • 无需参考资料
  • 无需基类
  • 支持.net 3.5、.net 4、Silverlight 3、Silverlight 4、Silverlight 5 和 Windows Phone 7
  • 支持客户端配置文件模式