C# 如何在类上实现自定义LogAttribute

C# 如何在类上实现自定义LogAttribute,c#,logging,aop,C#,Logging,Aop,我想实现自定义LogAttribute,它将在类中每个方法的开始和结束处记录信息,还应该记录错误。我想在类上应用该属性 我见过夏普。但我希望有自己的自定义日志属性,而不是使用PostSharp或类似的库 性能是主要关键,LogAttribute不应影响性能 我读过有关IMessageSync的文章,但它会影响性能 在MVC中,我们得到CustomFilters,其中可以有LogActionHandler,它将在每个操作方法的开始和结束执行。我想在ASP.NETWeb表单中实现类似的功能 任何人都

我想实现自定义LogAttribute,它将在类中每个方法的开始和结束处记录信息,还应该记录错误。我想在类上应用该属性

我见过夏普。但我希望有自己的自定义日志属性,而不是使用PostSharp或类似的库

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

我读过有关IMessageSync的文章,但它会影响性能

在MVC中,我们得到CustomFilters,其中可以有LogActionHandler,它将在每个操作方法的开始和结束执行。我想在ASP.NETWeb表单中实现类似的功能


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

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

下面是一个“DiagnosticsInterceptor”的示例,其功能与您所需的相同:

赞成者:是免费的

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

不幸的是,对于ASP.NET控件,情况并非如此。 因此,此方法仅适用于自定义类:
请参见

不要重新发明轮子,使用经过时间和社区图书馆验证的经过良好测试的工具。是否有可用于日志属性的免费图书馆?PostSharp是付费的…@user1233802:PostSharp有一个免费的“启动版”,可以让你随心所欲地实现你自己的自定义
LogAttribute
,而且不会影响性能,因为这一切都是在编译时完成的。或者像其他人所说的那样,看看Castle DynamicProxy@user1233802,不要重新发明轮子,如果性能是关键,不要使用动态解决方案,因此最终它将成为PostSharp,甚至现在在NuGet上,开始使用不到20分钟,而且您已经为日志等提供了一个可运行且经过测试的AOP解决方案。只能推荐它,不要害怕获得免费许可证的需要