我是ILGenerator的新手,對我來說如此光禿禿,直接指向我可能有所幫助的任何答案。謝謝。ILGenerator實例化對象和調用實例方法
我想構造一個泛型類型的實例並調用該實例上的方法。然後返回該方法的結果。
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。 –
您必須將目標對象的引用推入堆棧。 – whymatter