29

在大型应用程序中,我发现自己真的希望我有内置的 AOP 工具。在 C# 中,你能做的最好的事情就是工厂和 RealProxys、PostSharp、ICorDebug、ICorProfiler 或注入框架。没有干净的内置方式来执行 AOP。

是否有任何迹象(博客文章/内部讨论)表明 AOP 正在进行中?

4

4 回答 4

11

Romain 的回答(几乎 :) 完美地涵盖了当前的解决方案。至于未来的支持,Anders Hejlsberg此前曾表示他们对 AOP 处于观望状态。

我们只能希望通过 csc 的托管重写和“编译器即服务”,可以插入编译器,并在那里注入方面。

于 2009-05-07T10:54:47.507 回答
9

我还没有听说过“干净的内置 AOP 方式”。但正如您所说,已经有很多“干净的 AOP 方法”,使用成熟而强大的框架,如PostSharpCastle DynamicProxy

使用 BCL 进行 AOP 的一种明显方法是使用 .NET Remoting 堆栈中的透明且真实的代理,这种方法具有很强的局限性。

另一种方法是依靠 System.Reflection.Emit 来动态生成代理,比如,嗯,来自 Castle 的 DynamicProxy。

最后,还有另一个微软官方标记的解决方案,随企业库一起提供。我说的是策略注入应用程序块Unity还提供了一些利用 PIAB 的拦截功能。

于 2009-05-07T10:36:48.643 回答
2

Spring.NET 也提供了 AOP。它需要大量配置,但一旦设置好,它就可以正常工作。

于 2009-05-07T22:44:40.360 回答
1

Delphi Prism 的 5 月版本在语言级别支持 AOP。

你可以在这里找到更多关于它的信息

http://prismwiki.codegear.com/en/Cirrus

此位置还有一个方面的开源库

http://code.remobjects.com/p/prismaspects/

于 2009-05-07T18:00:20.527 回答