【发布时间】:2015-08-10 13:27:35
【问题描述】:
我正在尝试在我的应用程序中“注入”自定义跟踪方法。
我想让它尽可能优雅,而不需要修改大部分现有代码,并且可以轻松启用/禁用它。
我能想到的一个解决方案是创建一个自定义 Attribute,我会将它附加到我想要跟踪的方法中。
基本思路:
public class MethodSnifferAttribute : Attribute
{
private Stopwatch sw = null;
public void BeforeExecution()
{
sw = new Stopwatch();
sw.Start();
}
public void ExecutionEnd()
{
sw.Stop();
LoggerManager.Logger.Log("Execution time: " + sw.ElapsedMilliseconds);
}
}
public class MyClass
{
[MethodSniffer]
public void Function()
{
// do a long task
}
}
是否有任何现有的.NET 属性在调用/结束方法时提供回调?
【问题讨论】:
-
我想我什么都不知道。
-
Postsharp 会让您轻松搞定。您甚至可以通过 AssemblyInfo.cs 将方面应用于整个命名空间。查看:postsharp.net
-
ASP.NET 支持过滤器:
System.Web.Http.Filters.ActionFilterAttribute。感兴趣的:OnActionExecuting和OnActionExecuted。 -
PostSharp 是免费的还是许可的?
标签: c# asp.net .net trace .net-trace