我今天刚看到Ayende关于PostSharp 的帖子.我下载了代码并试了一下,我认为这是我见过的最酷,最容易使用的方法来处理AOP.
在他的帖子中,Ayende说PostSharp通过IL Weaving完成它的魔力.现在,在一些抽象的层面上,我可以推断出这意味着什么,但我想知道是否有更详细的答案.不幸的是,很长一段时间以来,谷歌第一次出现在我身上.所以我想这将是StackOverflow的一个很大的问题(因为我是一个订阅Jeff的博客好几年,现在,知道这个网站是做它的事).
那么究竟是什么IL编织以及它是如何完成的?
编织是指将功能注入现有程序的过程.这可以在概念上以多个级别完成:
源代码编织将在编译代码之前注入源代码行
IL编织(用于.NET)将代码添加为程序集中的IL指令
ByteCode weaving(for Java)适用于类文件,请参阅这些注释与AspectJ一起使用
从理论上讲,你可以更深入地编写一个可执行文件编译成本机指令,但这会增加很多复杂性,我不知道有什么能做到这一点.
IL Weaving与ByteCode Weaving类似..Net编译为由.NET clr运行的中间语言.IL Weaving基本上是分析和改变中间语言.由于它是在该级别完成的,因此可以为所有.NET语言完成.