在大型应用程序中,我发现自己真的希望我有内置的 AOP 工具。在 C# 中,你能做的最好的事情就是工厂和 RealProxys、PostSharp、ICorDebug、ICorProfiler 或注入框架。没有干净的内置方式来执行 AOP。
是否有任何迹象(博客文章/内部讨论)表明 AOP 正在进行中?
Romain 的回答(几乎 :) 完美地涵盖了当前的解决方案。至于未来的支持,Anders Hejlsberg此前曾表示他们对 AOP 处于观望状态。
我们只能希望通过 csc 的托管重写和“编译器即服务”,可以插入编译器,并在那里注入方面。
我还没有听说过“干净的内置 AOP 方式”。但正如您所说,已经有很多“干净的 AOP 方法”,使用成熟而强大的框架,如PostSharp或Castle DynamicProxy。
使用 BCL 进行 AOP 的一种明显方法是使用 .NET Remoting 堆栈中的透明且真实的代理,这种方法具有很强的局限性。
另一种方法是依靠 System.Reflection.Emit 来动态生成代理,比如,嗯,来自 Castle 的 DynamicProxy。
最后,还有另一个微软官方标记的解决方案,随企业库一起提供。我说的是策略注入应用程序块。Unity还提供了一些利用 PIAB 的拦截功能。
Spring.NET 也提供了 AOP。它需要大量配置,但一旦设置好,它就可以正常工作。
Delphi Prism 的 5 月版本在语言级别支持 AOP。
你可以在这里找到更多关于它的信息
http://prismwiki.codegear.com/en/Cirrus
此位置还有一个方面的开源库