据我了解,.net 4.0 CLR需要进行更改以支持动态语言运行时。
有没有办法看看这些变化是什么?我注意到.net标准没有提到像DynamicObject这样的东西 - 所有这些似乎都是DLR的一部分。但是如果DLR“只是一个库”,则不需要.net 4来运行它。
所以我很好奇.net 4改变了什么以支持DLR。
答案 0 :(得分:3)
没有变化,它只是一个图书馆。不需要.NET 4.0 CLR,2.0版本的DLR驱动的IronPython和IronRuby。您可以查看从该版本开始的内容,您可以下载源代码from here。这段代码很大程度上没有改变到System.Core.dll。
要注意相当多的东西。这一切都是直接的C#。它使用CLR中的现有支持通过Reflection和COM interop进行动态绑定。它声名鹊起的原因是,只需支付一次这笔费用即可。它缓存绑定的结果,以便在后续绑定中以低成本获得。
将DLR接口粘合剂添加到C#版本4本身就是一项相当大的工作,嵌入在Microsoft.CSharp.dll中,在编译器中有很多工作。该源代码不可用,但您可以使用Reflector嗅探它。