2009-09-13 89 views
43

有没有什么好的资源可以围绕面向方面编程来包装我的头脑?面向方面编程C#

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

+0

我看来,像一个傻瓜http://stackoverflow.com/questions/325558/aspect-oriented-programming-examples – Graviton 2009-10-05 07:35:00

+0

[Aspect Oriented Programming](http://izlooite.blogspot.com/2010/06/aspect-oriented-programming.html#comment-形式) – 2012-07-21 12:59:12

+0

在.NET中检查AOP - http://manning.com/groves(是的,这是无耻的自我推销,但它是levant!) – 2013-11-01 20:48:53

回答

51

只是为了让你的头围绕它:它是能够事件,如:对象的创建,属性的设置等等,并且将一般的功能附加到它们上面,这些功能将被填充相关的上下文。

因为C#没有内置的工具,所以需要像PostSharp这样的框架来执行'字节码编织'(即直接写入代码以实际调用这些调用)来模拟它。

+4

在附注中,http://www.postsharp.org/对它是什么以及它的用途有很好的解释。 – RCIX 2009-09-13 05:22:39

+0

是postsharp是好东西(也有很好的网站!) – TheVillageIdiot 2009-09-13 17:35:54

+1

运行时排出也不错。 Unity和其他人使用反射散发做方法拦截。另外.net的确有一个像Jean提到的钩子ContextBoundObjects。不幸的是,存在与上下文绑定对象的巨大打击。 – AbdElRaheim 2012-10-26 06:32:33

2

面向方面编程意味着具有一个meta级别,您可以在其中定义日志记录或安全/访问控制功能以与您的代码交织,而不是在您的代码中非常耗时地实现这些功能。所以,不是一维的,你必须编程二维。

我知道这听起来很不引人注意,但一旦你明白它就很容易。

AOP经常与拦截呼叫并在后台执行任务的代理类一起使用。

3

什么是及时的问题?

Here是值得倾听的播客。
这会给你一个很好的概述什么是AOP?它可以在哪里使用?

希望有所帮助。