!!T
ジェネリック パラメータを参照するために使用するジェネリック メソッドを宣言するには、次のようにします。
.method public static void Method<T1, T2>(!!T1 arg1, !!T2 arg2) {
// ...
}
または、その番号を使用できます。
.method public static void Method<T1, T2>(!!0 arg1, !!1 arg2)
ジェネリック メソッドを呼び出すには、インスタンス化を提供します。ただし、インスタンス化で参照される型は、呼び出し元のメソッドではなく、呼び出されたメソッドに関するものです。
ldc.i4.1
newobj instance void [mscorlib]System.Object::.ctor()
// !!0 and !!1 refer to the generic parameters of Method<T1, T2>,
// not any generic method this call instruction is part of
call void Method<int32, object>(!!0,!!1)
メソッドがジェネリック型の一部である場合は!T
、同様の方法で型パラメーターを参照するために使用して型のインスタンス化を指定します。ジェネリック型では、型名の後に ` があり、その後にジェネリック引数の数が続くのが規則であることに注意してください。
call instance void MyGenericType`1<int32>::Method(!0)