C# 是否可以从MethodBuilder/ConstructorBuilder调用DynamicMethod

C# 是否可以从MethodBuilder/ConstructorBuilder调用DynamicMethod,c#,reflection.emit,dynamicmethod,C#,Reflection.emit,Dynamicmethod,我有一个从ConstructorBuilder创建的ILGenerator,我想用它创建并调用DynamicMethod,但我得到一个InvalidOperationException- 无法从其他模块导入全局方法或字段 var constructorBuilder = typeBuilder.DefineConstructor(...); var ilGenFromCtor = constructorBuilder.GetILGenerator(); . . . var dynamicMeth

我有一个从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

因为您实际上是在运行时定义一个完整的程序集,所以您必须使用的重载之一及其返回的实例在程序集中的某个地方(可能在从中获取
ConstructorBuilder
的类中)声明该方法<代码>动态方法对象在.NET运行时的处理方式与
反射.Emit
使用的方式完全不同。使用
MethodBuilder
定义方法后,可以将其用作
ILGenerator.Emit

的第二个参数。是否尝试调用委托(调用其
Invoke()
方法)?