动态装配和方法

我已经编写了.NET和C#多年,但最近才在反射的上下文中遇到DynamicMethod类型以及Dynamic Assembly的概念。 它们似乎总是在IL(运行时代码)生成中使用。

不幸的是,MSDN在定义什么是动态组合/方法实现方面做得非常差,而且它们应该用于什么。 请问anyoen能在这里启发我吗? 与DLR有什么关系? 它们与运行时的静态(正常)生成的程序集和方法有什么不同? 我应该知道如何以及何时使用它们?


DynamicMethod用于创建没有任何新程序集的方法。 他们也可以为一个班级创建,所以你可以访问它的私人成员。 最后,DynamicMethod类将构建一个可用于执行该方法的委托。 例如,为了访问一个私人字段:

var d = new DynamicMethod("my_dynamic_get_" + field.Name, typeof(object), new[] { typeof(object) }, type, true);
var il = d.GetILGenerator();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Ldfld, field);
if (field.FieldType.IsValueType)
    il.Emit(OpCodes.Box, field.FieldType);
else
    il.Emit(OpCodes.Castclass, typeof(object));

il.Emit(OpCodes.Ret);
var @delegate = (Func<object, object>)d.CreateDelegate(typeof(Func<object, object>));

希望能帮助到你。

链接地址: http://www.djcxy.com/p/56829.html

上一篇: Dynamic Assemblies and Methods

下一篇: I use Python 2.7, Windows 7 64