ldtoken
ILメソッドを取得して、ジェネリッククラス内のジェネリックメソッドのジェネリックインスタンスをロードしようとしています(たとえば、 List.ConvertAll<TOutput>
):
ldtoken method instance
class [mscorlib]System.Collections.Generic.List`1<!!0>
[mscorlib]System.Collections.Generic.List`1::ConvertAll<string>(
class [mscorlib]System.Converter`2<!0,!!0>)
これにより、例外が発生します。
未処理の例外: System.TypeLoadException: アセンブリ 'TestAssembly、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' から型 'System.Collections.Generic.List`1' を読み込めませんでした。
System.Collections.Generic.List
で明示的に宣言されているにもかかわらず、 のテスト アセンブリを探していmscorlib
ます。
ただし、インスタンス化されていないメソッド トークンの読み込みは機能します。
ldtoken method instance
class [mscorlib]System.Collections.Generic.List`1<!!0>
[mscorlib]System.Collections.Generic.List`1::ConvertAll<[1]>(
class [mscorlib]System.Converter`2<!0,!!0>)
非ジェネリック クラスのジェネリック メソッドは次のように機能します。
ldtoken method void [mscorlib]System.Array::Sort<object>(!!0[])
ldtoken method void [mscorlib]System.Array::Sort<[1]>(!!0[])
どうしたの?これは .NET のバグですか? (v2 および v4 CLR で複製しました)