gpt4 book ai didi

c# - 为什么编译后代码注入(inject)比预编译代码注入(inject)更好?

转载 作者:太空狗 更新时间:2023-10-29 22:15:13 25 4
gpt4 key购买 nike

所以我们都知道 C# 没有类似 C 的宏预处理器(关于为什么 here 有一个很好的线程)。但是现在 AOP 越来越受欢迎,似乎我们开始用后处理器做我们以前用预处理器做的事情(记住,我只是用 PostSharp 弄湿了我的脚,所以也许偏离基地)。

我非常喜欢 C# 中的属性,但是如果出于充分的理由(作为前 MFC 用户,我仍然质疑但仍然接受)预处理器被遗漏了,为什么编译后代码注入(inject)是一个更好的主意比预编译代码注入(inject)?

最佳答案

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

  1. 语言不可知论者。
  2. 与高级语言(每两年进行一次重大更新)相比,MSIL 具有更稳定的规范。
  3. 大多数时候,MSIL 是处理方面时所需的抽象级别。您不需要了解所有等效结构(想想“使用”和“最终尝试”)。
  4. 在 2008 年之前,没有人成功开发出像样的 C# 编译器。即使他们现在已经 catch 了,Mono 遇到的困难也足够令人印象深刻。
  5. 处理二进制似乎比处理源代码快得多。
  6. 处理二进制程序集使得执行它成为可能——正在处理的程序集可以自行转换。在 PostSharp Laos 首次发布之前,这是闻所未闻的。

也就是说,C/C++ 的 AOP 实现确实是一个预编译器 (WeaveC),而 Java 中的实现是一个编译器扩展(这是因为有许多 Java 编译器的 OSS 实现)。

-盖尔

关于c# - 为什么编译后代码注入(inject)比预编译代码注入(inject)更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2210735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com