阅读后this article关于罗斯林。我遇到了两件事我不明白。
- 解构编译器
- C# 获得了动态语言通过 Roslyn 在运行时生成和调用代码的能力
我搜索了很多关于堆栈溢出的帖子,并用谷歌搜索了它。但无法了解全貌。
任何人都可以向我解释或指导我一些有关这些主题的链接和资源。
最佳答案
摘自链接文章:
Hejlsberg demonstrated a C# program that passed a few code snippets to the C# compiler as strings; the compiler returned the resulting IL assembly code as an object, which was then passed to the Common Language Runtime (CLR) for execution. Voilà! With Roslyn, C# gains a dynamic language's ability to generate and invoke code at runtime.
部分:
[...] C# gains a dynamic language's ability to generate and invoke code at runtime.
...这只是博客文章作者做出的一个非常错误的假设...
从应用程序编译代码不会将 C# 转变为动态语言,也不会转变新的 C# 编译器来替代解释器...
里>C# 自诞生以来就能够使用反射发射在运行时生成代码。新编译器似乎没有添加该功能,但无论如何,使用新编译器从常规 C# 代码生成代码比使用反射发射更容易。此外,正如 @hvd 在一些评论中指出的那样,自 C# 开始使用
CSharpCodeProvider
以来也是可能的。 .自 .NET 4.0 起,C# 可以使用动态语言运行时与动态语言进行互操作,动态语言运行时的创建是为了打开在 .NET 之上实现解释性语言的大门(同时也使 COM 互操作更容易...)。
关于另一个问题(关于解构编译器的事情),这意味着新的 C# 编译器允许您 Hook 其他代码以根据 C# 编译步骤执行操作。
我会看一下 Roslyn Overview on GitHub其中有很多细节可以让该主题更加深入。
关于c# - 什么是解构编译器? C# 如何获得动态语言在运行时通过 Roslyn 生成和调用代码的能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36820533/