【发布时间】:2017-07-26 17:41:43
【问题描述】:
我正在尝试构造一个泛型类型的实例并在该实例上调用一个方法。然后返回方法的结果。
var genericType = typeof(GenericType<>).MakeGenericType(typeof(TOutput));
il.DeclareLocal(genericType);
var instanceMethod = genericType.GetMethod("MethodName", new Type[0]);
il.Emit(OpCodes.Call, instanceMethod);
il.Emit(OpCodes.Ret);
我不断收到“System.InvalidProgramExecution”异常。
GenericType 类看起来像这样
public class GenericType<T>
{
public T MethodName()
{
...
}
}
【问题讨论】:
-
找出正确的 IL 调用的一个简单方法是编写 C# 代码以执行您想要执行的操作,在发布模式下编译,然后使用 ILDASM 查看 IL。
-
你必须将目标对象的引用压入栈中。
标签: c# ilgenerator