aly*_*aly 4 c# reflection interception
有没有一种方法可以拦截一些方法调用而不需要在方法本身周围进行任何代码更改?
我不需要在运行时注入任何自定义行为,只需将自定义性能日志记录添加到现有项目.
Aro*_*ron 14
您需要面向方面编程.
AOP有4种主要口味
RealProxy基于运行时的AOP以上是按执行速度(从最慢到最快)的顺序排序.注意最后两个"应该"是相同的速度.但是我希望编译器比Post Compile IL编织产生更好的IL.
第一个阵营通常包括IOC容器,因为它们非常适合这种模式,包括但不限于此
第二个阵营非常罕见,我能想到的唯一一个项目是Entity Framework(它用于Lazy加载,但它不可扩展,无法自定义).
第三阵营也非常灵巧,因为这种技术非常复杂和困难.这可以通过在编译后编辑dll程序集来实现,以添加所需的额外代码.
最后的阵营相对较新.事实上,新的唯一真正的入口是实验性的MS Roslyn.这实际上是一个C#编译器.所以...是的......它非常神奇.
现在,如果您遇到性能关键代码的真正巨大性能问题,我建议使用Fody.令人敬畏的是,它是免费的(与Postsharp Pro不同),它使用nuget,并且Fody.MethodTimer 中已经有一个性能工具.