内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
对于一个给定的类我想跟踪功能,即我想记录每个方法调用(方法签名和实际参数值)和每个方法退出(只是方法签名)。
我如何完成这个假设:
为了让问题更具体,我们假设有三个类:
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?
C#不是面向AOP的语言。它具有一些AOP功能,可以效仿其他一些功能,但使用C#编写AOP是很痛苦的。
我想方设法做到你想做的事情,我发现没有简单的方法来做到这一点。
据我了解,这是你想要做的:
[Log()]
public void Method1(String name, Int32 value);
为了做到这一点,你有两个主要选择
最后的选择是使用IoC框架。