首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么后编译代码注入比预编译代码注入更好?

为什么后编译代码注入比预编译代码注入更好?
EN

Stack Overflow用户
提问于 2010-02-06 05:55:40
回答 4查看 3.5K关注 0票数 5

所以我们都知道C#没有类似C语言的宏预处理器(并且有一个很好的线索来解释为什么是here)。但是现在AOP越来越有吸引力了,似乎我们开始用后处理器做一些事情,就像我们过去用预处理器做的那样(请记住,我只是接触了PostSharp的脚,所以可能是错误的)。

我是C#属性的铁杆粉丝,但是如果有充分的理由(作为一个前MFC用户,我仍然质疑但仍然接受),为什么后编译代码注入比预编译代码注入更好呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-14 00:54:12

我在5年前设计PostSharp时选择后编译的原因是:

与高级语言(每隔一年更新一次)相比,

  1. Language agnosticism.
  2. MSIL具有更稳定的规范。在大多数情况下,
  3. 是您在处理方面时需要的抽象级别。你不需要知道所有等价的结构(想想f 'using‘和'try-finally').
  4. Before 2008,没有人能成功地生产出一个像样的C#编译器。code.
  5. Dealing遇到的困难令人印象深刻,即使它们现在已经迎头赶上了。
  6. 处理二进制似乎比用二进制程序集处理源Mono要快得多,这使得执行它成为可能--被处理的程序集可以自我转换。在老挝( PostSharp )首次获释之前,这是前所未闻的。

也就是说,面向方面编程的C/C++实现实际上是一个预编译器(WeaveC),而Java语言中的实现是一个编译器扩展(这是因为有许多Java编译器的OSS实现)。

-gael

票数 7
EN

Stack Overflow用户

发布于 2010-02-06 06:32:29

从技术上讲,Visual Studio中内置了一个针对C#的预编译选项:Text Template Transformation Toolkit (T4)。这允许您在预编译步骤中做一些非常神奇的事情,并且是相当多的产品的基础,例如一些ORM等。

票数 4
EN

Stack Overflow用户

发布于 2010-02-06 06:08:35

如果要进行预编译,则必须解释来自您支持的所有不同语言的源文件,然后在将代码传递给编译器之前生成该语言的代码。有了后处理,您可以简单地使用反射来检查程序集,无论原始语言是C#、Visual Basic还是其他语言。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2210735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档