我想在调用特定方法时收到通知。我希望我能用反射完成这个,但是我的尝试并没有让我到任何地方。我如何得到通知?
我认为使用MethodInfo
是可行的方式,但就像我说的那样,我没有找到任何可以帮助我完成我想要做的事情。
我不能改变方法或用属性或任何东西装饰它。如果我可以做那样的事情,我不需要这样做,我可以改变方法本身。
答案 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)
您可以使用扩展方法
因此您可以使用不同的属性并在实际方法之前或之后修改所有内容