题
在大型应用程序中,我发现自己真的希望我有内置的AOP设施。因为它位于C#中,您可以做的最好的是工厂和RealProxys,PostSharp,ICorDebug,ICorProfiler或注入框架。做AOP没有干净的内置方式。
是否有任何指示(博客文章/内部讨论)表明AOP正在进行中?
解决方案
罗曼的答案涵盖(几乎:)完美的当前解决方案。至于未来的支持, Anders Hejlsberg 之前曾说过他们正在等待和参见关于AOP的模式。
我们只能希望通过csc的管理重写和«编译器即服务»,可以插入编译器,并在那里注入方面。
其他提示
我没有听说过“干净的内置AOP方式”。但正如你所说,已经有很多“干净的AOP方式”,使用成熟而强大的框架,如 PostSharp 或 Castle DynamicProxy 。
使用BCL,一种显而易见的AOP方法,就是使用.NET Remoting堆栈中的透明和真实代理。
另一种方法是依靠System.Reflection.Emit动态生成代理,例如来自Castle的hum,DynamicProxy。
最后,还有另一个官方微软标记的解决方案,随企业版一起提供图书馆。我在谈论政策注入申请阻止。 Unity 还提供了一些利用PIAB的拦截功能。
Spring.NET也提供AOP。它需要很多配置,但一旦设置它就能很好地运行。
不隶属于 StackOverflow