C#中的面向切面编程

49

有哪些好的资源可以帮助我理解面向切面编程(AOP)?

PS:我需要了解AOP编程,而不是针对.NET或C#可用的库或框架 :)


在我看来,这好像是 https://dev59.com/_3RC5IYBdhLWcg3wW_lk 的重复。 - Graviton
看看.NET中的AOP - http://manning.com/groves(是的,这是无耻的自我推销,但它很相关!) - Matthew Groves
4个回答

56

简单来说:它的能力在于捕获事件,例如对象创建、属性设置等,并将相应上下文内容填充到通用函数中。

由于C#没有内置的此功能,因此需要使用框架(例如PostSharp)进行“字节码编织”(即编写代码以直接向您的类中进行调用)以模拟其行为。


4
顺便提一句,http://www.postsharp.org/上有关于PostSharp是什么以及它的用途的很好的解释。 - RCIX
是的,PostSharp 是一个好东西(还有很棒的网站!) - TheVillageIdiot
1
运行时发射也是不错的选择。Unity和其他框架使用反射发射来进行方法拦截。此外,.net确实有一个钩子ContextBoundObjects,就像Jean所提到的那样。不幸的是,使用上下文绑定对象会带来巨大的性能损失。 - AbdElRaheim

4

3

面向切面编程(Aspect Oriented Programming)是指在代码中定义日志记录、安全/访问控制等功能的元级别,而不是每次在代码中实现这些功能。因此,您可以将编程从一维变为二维。

我知道这可能听起来很玄乎,但一旦理解了就很容易。

AOP通常与代理类一起使用,这些代理类拦截调用并在后台执行操作。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接