如何在类上实现自定义LogAttribute

use*_*802 5 c# logging aop

我想实现自定义LogAttribute,它将在类中的每个方法的开头和结尾记录信息,也应该记录错误.我想将该属性应用于Class.

我见过PostSharp.但我想拥有自己的自定义日志属性,而不是使用PostSharp或类似的库.

性能是主要关键,LogAttribute不应影响性能.

我已阅读有关IMessageSync的信息,但它会影响性能.

在MVC中,我们得到CustomFilters,其中我们可以使用LogActionHandler,它将在每个Action方法的开头和结尾执行.我想在ASP.Net web Form中实现类似的功能.

任何人都可以提供一些示例代码来帮助我.

Max*_*Max 2

Unity - Microsoft 的 IoC/依赖注入容器也允许方法拦截。

这是“DiagnosticsInterceptor”的示例,其功能与您想要的相同: http://hmadrigal.wordpress.com/2010/12/25/aspect-oriented-programming-and-interceptor-design-pattern-with-unity -2/

优点:它是免费的

缺点:它需要 Unity/DI/IoC 模式。你的类需要有一个接口,或者一个虚拟方法。

不幸的是,对于 ASP.NET 控件来说并非如此。因此,此方法仅适用于您的自定义类:请参阅Intercept Unity 2.0 HandlerAttribute without an interface