我使用ILSpy来探索LogAttribute类。但我无法理解它是如何工作的?
据我所知,创建方面有两种方法:
1)高级:OnMethodBoundaryAspect,OnExceptionAspect,MethodInterceptionAspect,LocationInterceptionAspect,EventInterceptionAspect。
2)低级:具有On *** Advice属性的MethodLevelAspect。
但LogAttribute既不使用第一种情况也不使用第二种情况。 LogAttribute扩展了MethodLevelAspect但没有建议。那么它是怎样工作的?
创建问题中描述的方面的两种方法是支持和记录的方法。但是,在较低级别上,PostSharp SDK将方面类实现的接口与weaver类匹配。然后,所选择的编织器处理目标代码元素的IL编织。
提供方面的基类(例如OnMethodBoundaryAspect)和建议(例如OnMethodEntryAdvice)以使公共方面的实现更方便。从PostSharp 6.1开始,最终用户目前不支持从头开始创建自定义方面编织器的用例。