我想实现自定义LogAttribute,它会在类的每个方法的开头和结尾记录信息,也应该记录错误。我想将该属性应用于Class。
我见过PostSharp。但我想拥有自己的自定义日志属性,而不是使用PostSharp或类似的库。
性能是主要关键,LogAttribute不应影响性能。
我已阅读有关IMessageSync的信息,但它会影响性能。
在MVC中,我们得到CustomFilters,其中我们可以使用LogActionHandler,它将在每个Action方法的开头和结尾执行。我想在ASP.Net web Form中实现类似的功能。
任何人都可以通过提供一些示例代码来帮助我。
答案 0 :(得分:2)
Unity - 微软的IoC /依赖注入容器也允许方法拦截。
以下是“DiagnosticsInterceptor”的示例,它可以根据需要执行相同操作: http://hmadrigal.wordpress.com/2010/12/25/aspect-oriented-programming-and-interceptor-design-pattern-with-unity-2/
亲:这是免费的
Con:它需要Unity / DI / IoC模式。 你的班级需要有一个界面或虚拟方法。
不幸的是,对于ASP.NET控件来说并非如此。 因此,此方法仅适用于您的自定义类: 见Intercept Unity 2.0 HandlerAttribute without an interface