我正在寻找的是一种在调用另一个方法之后但在输入之前调用方法的方法.例:
public class Test { public void Tracer ( ... ) { } public int SomeFunction( string str ) { return 0; } public void TestFun() { SomeFunction( "" ); } }
在上面的例子中,我希望在TestFun()调用SomeFunction()之后但在输入SomeFunction()之前调用Tracer().我还想在SomeFunction()上获得反射数据.
我在每个人的答案中发现了一些有趣的东西.这个问题的最佳答案是使用Castle的DynamicProxy; 但是,这不是我将要用来解决我的问题,因为它需要在我的项目中添加一个库.我只有一些方法需要"跟踪",因此我选择采用与动态代理实现方式混合的修改后的"核心"方法.我在下面回答我自己的问题时解释了这一点.
就像我要注意的那样,我将研究一些其他应用程序的AOP和ContextBoundObject类.
您可以使用动态代理(例如Castle的DynamicProxy)来拦截调用,运行您希望的任何代码,然后根据您的需要调用您的方法.