.NETでデバッグを使用してarroundを再生しています。 そして、私はdllからDynamicILInfoでメソッドを呼び出そうとしています。 しかし、私は間違って何をしていますか?DynamicILInfo呼び出しメソッド
delegate void assinv1();
private static void insert()
{
MethodInfo entryPoint = AppDomain.CurrentDomain.Load(File.ReadAllBytes(@"method.dll")).EntryPoint;
Type[] args = new Type[] { typeof(string[]) };
DynamicMethod dm = new DynamicMethod("assinv", null, null);
DynamicILInfo dynamicILInfo = dm.GetDynamicILInfo();
SignatureHelper localVarSigHelper = SignatureHelper.GetLocalVarSigHelper();
localVarSigHelper.AddArguments(args, null, null);
dynamicILInfo.SetLocalSignature(localVarSigHelper.GetSignature());
dynamicILInfo.SetCode(entryPoint.GetMethodBody().GetILAsByteArray(), entryPoint.GetMethodBody().MaxStackSize);
assinv1 d1 = dm.CreateDelegate(typeof(assinv1)) as assinv1;
d1();
}
}
コードはどのように機能していませんか?何か例外がありますか?はいの場合、全体の例外を投稿できますか? – svick
@Justus元のメソッドコードを表示します。そして、私はSetCode()にすべて電話しているのを見ていません。 –
@svick何も情報なしの短い質問には申し訳ありません。この例外が発生します。「Common Language Runtimeが無効なプログラムを検出しました。」私もこの機能を編集しました。 OPを見てください。 –