所以我们都知道C#没有类似C语言的宏预处理器(并且有一个很好的线索来解释为什么是here)。但是现在AOP越来越有吸引力了,似乎我们开始用后处理器做一些事情,就像我们过去用预处理器做的那样(请记住,我只是接触了PostSharp的脚,所以可能是错误的)。
我是C#属性的铁杆粉丝,但是如果有充分的理由(作为一个前MFC用户,我仍然质疑但仍然接受),为什么后编译代码注入比预编译代码注入更好呢?
发布于 2010-02-14 00:54:12
我在5年前设计PostSharp时选择后编译的原因是:
与高级语言(每隔一年更新一次)相比,
也就是说,面向方面编程的C/C++实现实际上是一个预编译器(WeaveC),而Java语言中的实现是一个编译器扩展(这是因为有许多Java编译器的OSS实现)。
-gael
发布于 2010-02-06 06:32:29
从技术上讲,Visual Studio中内置了一个针对C#的预编译选项:Text Template Transformation Toolkit (T4)。这允许您在预编译步骤中做一些非常神奇的事情,并且是相当多的产品的基础,例如一些ORM等。
发布于 2010-02-06 06:08:35
如果要进行预编译,则必须解释来自您支持的所有不同语言的源文件,然后在将代码传递给编译器之前生成该语言的代码。有了后处理,您可以简单地使用反射来检查程序集,无论原始语言是C#、Visual Basic还是其他语言。
https://stackoverflow.com/questions/2210735
复制相似问题