对于给定的类,我想具有跟踪功能,即,我想记录每个方法调用(方法签名和实际参数值)和每个方法退出(仅方法签名)。
假定以下条件,我如何完成此操作:
- 我不想将任何第三方AOP库用于C#,
- 我不想将重复的代码添加到我要跟踪的所有方法中,
- 我不想更改该类的公共API-该类的用户应该能够以完全相同的方式调用所有方法。
为了使问题更具体,我们假设有3个类:
public class Caller
{
public static void Call()
{
Traced traced = new Traced();
traced.Method1();
traced.Method2();
}
}
public class Traced
{
public void Method1(String name, Int32 value) { }
public void Method2(Object object) { }
}
public class Logger
{
public static void LogStart(MethodInfo method, Object[] parameterValues);
public static void LogEnd(MethodInfo method);
}
我如何调用Logger.LogStart和Logger.LogEnd每次调用方法1和方法2,而无需修改Caller.Call方法,没有明确地加入调用Traced.Method1和Traced.Method2?
编辑:如果允许我稍微更改Call方法,那将是解决方案?