【发布时间】:2012-06-15 22:58:43
【问题描述】:
我有一个从 ConstructorBuilder 创建的 ILGenerator,我想用它创建和调用 DynamicMethod,但我得到一个 InvalidOperationException - 无法从其他模块导入全局方法或字段。
var constructorBuilder = typeBuilder.DefineConstructor(...);
var ilGenFromCtor = constructorBuilder.GetILGenerator();
.
.
.
var dynamicMethod = new DynamicMethod("Name", ReturnType, Type.EmptyTypes, true);
var ilGenFromDynamicMethod = dynamicMethod.GetILGenerator();
.
.
var @delegate = dynamicMethod.CreateDelegate();
ilGenFromCtor.Emit(OpCodes.Call, @delegate.Method);
--Or
ilGenFromCtor.Emit(OpCodes.Call, dynamicMethod);
10x
【问题讨论】:
-
您是否尝试过调用委托(调用其
Invoke()方法)?
标签: c# reflection.emit dynamicmethod