代码之家  ›  专栏  ›  技术社区  ›  Alex

在.NET中被通知方法调用

  •  5
  • Alex  · 技术社区  · 16 年前

    每当调用特定方法时,我都希望得到通知。我希望我能通过反省来实现这一点,但我的努力没有给我带来任何帮助。如何通知我?

    我想用 MethodInfo 是一条路,但正如我所说,我在那里没有发现任何东西可以帮助我完成我想做的事情。

    我不能改变方法,也不能用属性或任何东西来装饰它。如果我可以这样做,我就不需要这样做了,我可以改变方法本身。

    4 回复  |  直到 16 年前
        1
  •  8
  •   Mitch Wheat    16 年前

    你考虑过面向方面编程吗?有点像 PostSharp .

        2
  •  2
  •   Giorgi    16 年前

    我认为唯一的方法是重写方法体,以便在调用方法时通知您,或者使用CLR分析Api。

    第一种方法可以通过使用AOP框架来实现。你可以使用Postsharp(它已经变成了一个商业产品)来实现onmethodboundaryapect。下面是一个例子: Derive the class from OnMethodBoundaryAspect

        3
  •  0
  •   code4life    16 年前

    反省是解决办法的一半。为了拦截方法调用,需要对观察到的对象进行包装。通常这是通过远程处理代理对象来完成的。

    企业库中有一个Unity截取块,它可以满足您的需要。此外,您可能还想查看Castle framework的DynamicProxy,它使您能够非常彻底地控制这个拦截过程。

    谷歌面向方面编程将给你更多的信息。

        4
  •  -1
  •   kamahl    16 年前

    可以使用扩展方法

    因此,您可以使用不同的属性并在实际方法之前或之后修改所有内容

    推荐文章