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

标签 c# .net c#-4.0 .net-4.0

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

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

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

    public void DoSomethingWhenEitherPropertyGetsChanged()
    {

    }
}

public class SubClass : BaseClass
{
    public string SubClassProperty { get; set; }
}

当任一属性的值发生更改时,我该怎么做才能让 DoSomethingWhenEitherPropertyGetsChanged 得到执行。

最佳答案

为此,您可以使用 notifypropertyweaver。它正是你想要的。这是一个链接:

来自开源主页:

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

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

关于C# - 拦截子类中的属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6078859/

相关文章:

c# - crypt SHA-512 算法的说明 (c#)

.net - 是否可以编写破坏构建的自定义属性(如 System.ObsoleteAttribute)?

c# - 在 Visual Studio c# 中子类 MultipartStreamProvider 失败?

C# - 将多行文本框保存到文本文件

c# - 如何订阅长期运行的消息源

.net - 如何在 F# 中定义类型成员常量?

c# - 在限制请求数量的同时从 REST 服务异步检索信息

.net - 如何使用代码契约进行单元测试

c# - 对于以 0x85 字符结尾的文件路径(Windows 8),.Net 4.6.1 和 4.6.2 之间的奇怪 Path.GetFullPath 行为不同

图像处理批处理工具,用于使用 YCbCr=4 :4:4 对图像进行重采样