阅读有关罗斯林的this article之后。我遇到了我不理解的两件事。


解构的编译器
C#通过Roslyn获得了动态语言在运行时生成和调用代码的能力


我在堆栈溢出中搜索了很多帖子,并用谷歌搜索了它。但无法了解全部情况。

谁能给我解释一下,或者给我一些有关这些主题的链接和资源。

最佳答案

摘自链接文章:


  Hejlsberg演示了一个C#程序,该程序将一些代码段传递给了
  C#编译器作为字符串;编译器返回结果IL
  汇编代码作为对象,然后传递给Common
  用于执行的语言运行时(CLR)。瞧!有了Roslyn,C#获得了
  动态语言在运行时生成和调用代码的能力。


部分:


  [...] C#获得了动态语言在运行时生成和调用代码的能力。


...只是博客帖子作者的一个非常错误的假设...


从应用程序编译代码不会将C#转换为动态语言,也不会将新的C#编译器替代解释器...
自从使用反射发射以来,C#就能够在运行时生成代码。似乎新的编译器没有添加该功能,但是无论如何,使用新的编译器从常规C#代码生成代码比使用反射发射更容易。此外,正如@hvd在某些评论中指出的,自C#最初使用CSharpCodeProvider以来,这也是可能的。
从.NET 4.0开始,C#可以使用动态语言运行时与动态语言进行互操作,该动态运行时的创建是为了在.NET之上打开解释语言的实现之门(并使COM互操作更容易...)。


关于另一个问题(关于解构编译器的问题),这意味着新的C#编译器允许您挂接其他代码以基于C#编译步骤执行操作。

我将看一下Roslyn Overview on GitHub,其中有许多细节应该使该主题更深入。

10-08 07:59
查看更多