【问题标题】:Track calls to auto implemented properties跟踪对自动实现的属性的调用
【发布时间】:2010-10-20 19:36:34
【问题描述】:

有没有一种方法可以跟踪和拦截对自动实现的属性中的值的调用?

我想要看起来有点像这样的代码:

[Tracked]
public int SomeProperty { get; set; }

理想情况下,该属性将能够拦截对属性值的更改。这可能吗?

我不希望它有第二段代码稍后在对象上旋转并请求值,而是属性应该在设置值时附加值。

【问题讨论】:

    标签: c# .net attributes aop


    【解决方案1】:

    没有。你这样做的方式是不使用自动属性。唯一可能的解决方案是使用 Castle AOP 之类的东西来围绕您的类创建自动包装器并跟踪更改,但这是很多难以实现的工作。

    【讨论】:

      【解决方案2】:

      您应该能够使用 AOP 框架来执行此操作,例如 PostSharp(我注意到它现在是商业的)。还有几个链接here,但是有些链接已经失效了。

      【讨论】:

        【解决方案3】:

        如果您想要一个在运行时工作的解决方案,那么您将需要一个面向方面的编程 (AOP) 框架;我使用CciSharp 取得了一些成功。它不像 PostSharp 那样成熟,但遵循相同的基本原则:它会修改您已经编译的代码,生成另一个程序集。

        如果您只是希望它用于测试(或分析),那么还有另一种选择:Microsoft Moles(也是免费的)。它的工作方式非常不同;它使用“detour”类型的注入在程序运行时更改程序,拦截属性 getter 和 setter 方法。

        【讨论】:

          猜你喜欢
          • 2014-10-23
          • 1970-01-01
          • 2022-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多