在C#/ .Net中进行面向方面编程(AOP)的最佳/最流行的方法是什么?

时间:2008-09-25 15:22:05

标签: c# .net aop

在C#/ .Net中进行面向方面编程(AOP)的最佳/最常用方法是什么?

5 个答案:

答案 0 :(得分:6)

    来自Castle的
  • DynamicProxy是 可能是最常用的工具 在CLR上做AOP。
  • Spring framework也提供 通过它的AOP功能 Spring.Aop名称空间。

答案 1 :(得分:3)

Postsharp是另一个众所周知的问题:“将AOP引入.NET!”我对它只有很少的经验,但它看起来不错,值得一看。

答案 2 :(得分:2)

PostSharp很好。我已经使用它大约一年了。它易于安装并且具有相当浅的学习曲线,考虑到它能够实现几乎神圣的力量。此外,似乎既有活跃的开发人员社区,也有响应式开发人员。

查看PostSharp主页上的代码示例。这些都是使用PostSharp完成的简单方面的好例子。

答案 3 :(得分:1)

我已经使用Spring.Net AOP Framework大约9个月了。它非常强大,即使在运行时而不是在编译期间进行编织,似乎也没有在使用中施加性能损失。唯一需要注意的是,尽管您正在应用建议的对象不需要了解Spring.Net AOP,但它们必须实现至少一个接口。一般来说,Spring.Net的文档非常出色,该文档规定将在未来版本中删除此限制,但不提供路线图。

Spring.Net AOP不要求您使用Spring.Net框架的其余部分,可以单独使用。

答案 4 :(得分:0)

对于几种不同类型的东西,我一直在玩自己。我有一些运气。通常,我创建一个接口,用类实现它,然后创建一个实现接口的代理,执行我想要的任何前提条件步骤,调用真实对象的方法,然后执行我想要的任何后置条件步骤。使用这种方法我的主要烦恼之一是你不能在一个接口中有构造函数,并且你也不能在接口中使用静态方法,所以没有明显的地方可以放置这种类型的代码。困难的部分是代码生成 - 因为你要么发出IL,要么你要发出你必须编译的C#。但这只是我的方法。它迫使我一次考虑一个方面,实际上 - 我还没有达到可以抽象出“方面”并用这些术语思考的程度。简而言之:滚动自己或找到您喜欢的工具集,可能来自Eric Bodden's list