私はjmp
オペコードの使い方を見ていますが、これまでのところ、ジェネリックメソッドを呼び出すことはできませんでした(’)。私のテストでは、その引数を返すメソッドと、最初のメソッドにジャンプするjmp
オペコードだけのメソッドがあります。私の問題は、非一般的な方法(例えば、に次のId2のシグネチャを持つシグネチャを使用)にジャンプすると実行時にエラーが発生しない一方、一般的な方法(例:jmp !!0 Program::Id<int32>(!!0)
にID: static T Id<T>(T x)
)“ Common Language Runtimeが無効なプログラム”の例外を検出しました。その問題の原因は何か?.Net CIL jmpオペコードとジェネリックメソッド
P.S. :ここで’ s a gistと私のテストで使用していたCIL。 Id2
にジャンプし、Id
にジャンプする行のコメントをIdInt
に書き込むと、前述の例外を除いて実行時に失敗します。 IdInt
とId2
には、StringBuilder
doesn ’のような参照型が返されますが、それは失敗します。
コンパイル可能なサンプルを投稿できますか? – thehennyy
@thehennyy良い点、私はテストILと要点を追加しました。 – arjanen
コードでpeverifyを実行しようとしましたか? – svick