2011-03-23 57 views
0

據我所知,.NET 4.0 CLR需要進行更改以支持動態語言運行時。CLR對動態進行了哪些更改?

有沒有辦法查看這些更改是什麼?我注意到.net標準沒有提到像DynamicObject這樣的東西 - 所有這些東西似乎都是DLR的一部分。但是如果DLR是「只是一個庫」,那麼就不需要.NET 4來運行它。

所以我只是好奇在.net 4中更改以支持DLR。

+0

你從哪裏得到CLR改變的想法?它改變了,但不支持DLR。 – Gabe 2011-03-23 18:20:25

+0

@加貝好點。它只是出現在各處,但人們傾向於將C#4和.net 4混合在一起。請參閱此處的示例:http://eknowledger.spaces.live.com/blog/cns!F475D4DE444DB1AB!3407.entry?wa=wsignin1.0&sa=209990974其中隱含地表示CLR需要更改以支持動態語言,但僅限於此顯示庫變化(例如System.Tuple),所以我想知道這裏的全部範圍是什麼或DLR是100%庫代碼。 – 2011-03-23 18:35:46

+0

大的CLR變化是方差支持,DLR可能會利用它。 – Gabe 2011-03-23 18:39:10

回答

3

沒有變化,它只是一個圖書館。不需要.NET 4.0 CLR,2.0版本的DLR支持IronPython和IronRuby。你可以看看它的版本,你可以下載源代碼from here。此代碼大部分保持不變,並被移入System.Core.dll。

請注意,它有相當多的。這完全是C#。它使用CLR中的現有支持通過Reflection和COM互操作進行動態綁定。它聲名遠揚的原因是它可以通過僅支付一次成本來實現。它緩存綁定的結果,以便在後續綁定中以低成本獲得。

將DLR接口粘貼添加到C#版本4本身是一項相當大的工作,嵌入在Microsoft.CSharp.dll中,在編譯器中有很多工作。該源代碼不可用,但您可以使用Reflector嗅探它。

相關問題