在.NET中收到方法调用的通知

时间:2010-06-03 10:29:51

标签: c# .net reflection

我想在调用特定方法时收到通知。我希望我能用反射完成这个,但是我的尝试并没有让我到任何地方。我如何得到通知?

我认为使用MethodInfo是可行的方式,但就像我说的那样,我没有找到任何可以帮助我完成我想要做的事情。

我不能改变方法或用属性或任何东西装饰它。如果我可以做那样的事情,我不需要这样做,我可以改变方法本身。

4 个答案:

答案 0 :(得分:8)

您是否考虑过AOP(面向方面​​编程)?类似于PostSharp

答案 1 :(得分:2)

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

第一种方法可以通过使用AOP框架来完成。您可以使用Postsharp(已转变为商业产品)来使用OnMethodBoundaryAspect实现它。以下是一个示例:Derive the class from OnMethodBoundaryAspect

答案 2 :(得分:0)

反思是解决方案的一半。您需要对被观察的对象进行包装以拦截方法调用。通常thi是通过远程代理对象完成的。

企业库具有Unity拦截块,它可以完全满足您的需求。此外,您可能需要查看Castle框架的DynamicProxy,它可以让您对此拦截过程进行非常彻底的控制。

Google搜索面向方面编程将为您提供更多信息。

答案 3 :(得分:-1)

您可以使用扩展方法

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