在.Net世界中使用的任何成熟的AOP库?

图书馆应该至少与AspectJ相比,任何?

您可以尝试各种具有开箱即用AOP的IOC容器(例如, Spring.Net具有强大的AOP freamework,Castle Windsor具有拦截器 , Unity也是如此),使用Snap与那些或使用像Postsharp这样的IL-Weaver。

更新我刚发现有关“ 事后补充 ”的内容 – 虽然在开发的早期阶段 – 看起来很有希望。 它旨在成为PostSource的替代Postsharp。

而我忘了提及能够编织的Mono.Cecil :

用简单的英语,使用Cecil,您可以加载现有的托管程序集,浏览所有包含的类型,动态修改它们并将修改后的程序集保存回磁盘。

Fody使用Cecil进行编织,并允许在构建阶段集成该步骤。 它带有一些方便的插件(例如,实现INotifyPropertyChanged或在编译后从公共属性生成ToString方法)。

我多年来一直在寻找完全相同的东西,我可以自信地告诉你,.Net中没有什么东西可以在各个方面远远地与AspectJ相媲美。

在.net世界中,我发现动态代理经常被用作AOP机制。 只有很少的工具可以支持像Postsharp和Afterthoughts这样的实际IL编织,这两种工具都可以找到带有属性的声明性编程,作为进行Aspect Orientation的一种方式。 它们都很容易使用,但如果你来自AOP背景(AspectJ),我不确定它们会是你所谓的AOP。

到目前为止,我还没有看到任何.Net实现的“真正的”AOP模式(正如十年前正式定义的那样,即切入点,连接点,建议,方面等),可能是因为对AOP的认识和兴趣很少,其常见用途通常仅限于日志记录,事务管理和exception策略,其中IoC和属性通常就足够了。

在.Net的这个阶段,很少见到业务规则和域驱动代码的AOP(也没有任何工具支持)。

我最近遇到的一个开源项目似乎开始填补这个空白( http://sheepaop.codeplex.com ),看起来仍然很早,但看起来像是一个AspectJ-ish实现。 正如我之前所说的那样,它仍然无法与AspectJ进行比较(根据你的问题),但重新表现非常明显,似乎是刻意的。

PostSharp 。

问题是关于.NET,你可以使用Nemerle语言,它具有强大的元编程function。

看一下Microsoft模式和实践中的Unity拦截 。