.NET 在 CLR 对动态语言或者脚本语言的支持是通过DLR 完成的, Miguel de Icaza对 DLR 的特点概括如下:
有了DLR,从c# 4.0开始,反射是不必要的,因为DLR可以使用运行时类型进行调用。由于动态使用DLR库很麻烦(而不是C#编译器为您生成代码),因此开源框架Dynamitey(https://github.com/ekonbenefits/dynamitey)使您可以轻松地缓存运行时访问编译器将生成的相同调用。
Dynamitey 是一个实用程序库,提供对 DLR 的扩展,包括:
Dynamitey 可以像dynamic关键字那样调用它,但是使用字符串作为属性名,而不是由编译器为您代劳,就是把对一个对象的反射调用转变成对一个dynamic对象的直接调用:
Dynamic.InvokeGet(d,"value2"); Dynamic.InvokeSet(d, value2, value);