Log函数调用c#中的参数值和返回值

假设我有一个看起来像这样的课程。

public static class Config { public static string GetAppSetting(string key) { return ConfigurationManager.AppSettings[key].ToString(); } } 

我想记录对此方法的每次调用以及关键参数和返回值。

我想要做的唯一代码更改是:

 [Log] public static class Config { public static string GetAppSetting(string key) { return ConfigurationManager.AppSettings[key].ToString(); } } 

我很可能使用log4net来记录来自Log属性的调用。 怎么能实现这一目标?

提前致谢!

您可以使用PostSharp之类的工具来创建日志记录方面。

据我所知,实现这一目标的唯一方法是使用PostSharp等库进行面向方面编程。

唯一可能的方法是为具有[Log]属性的所有类重写生成/编译的IL代码。 为此,您需要编写一个分析和操作代码的工具,并将其注册为“Post build事件”(在Visual Studio – >项目设置中)。

对于像这样的工作,Mono Cecil可能是一个很好的帮助: http : //www.mono-project.com/Cecil

但最重要的是你更好地重写代码并将方法签名更改为类似的东西

 public static string GetAppSetting(string key) { var result = ConfigurationManager.AppSettings[key].ToString(); Trace.TraceInformation(String.Format("Config.GetAppSetting - Key: {0}, Result: {1}", key, result)); return result; }