This is a very specific question, but maybe there is an IL expert
reading this, so: Does anyone know whether there is a way to load the
token of an open generic method (i.e. with unbound generic arguments)
from IL?
Consider, for example, the following IL program:
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
.ver 2:0:0:0
}
.assembly PreloadMethodInfo
{
.hash algorithm 0x00008004
.ver 1:0:0:0
}
.module PreloadMethodInfo.exe
.class private auto ansi beforefieldinit PreloadMethodInfo.Program
extends [mscorlib]System.Object
{
.method public hidebysig static void Main(string[] args) cil managed
{
.entrypoint
.locals init ([0] class [mscorlib]System.Reflection.MethodInfo 'method')
ldtoken method void class PreloadMethodInfo.Program::Generic<!!0>()
ldtoken class PreloadMethodInfo.Program
call class [mscorlib]System.Reflection.MethodBase
[mscorlib]System.Reflection.MethodBase::GetMethodFromHandle(valuetype
[mscorlib]System.RuntimeMethodHandle,
valuetype
[mscorlib]System.RuntimeTypeHandle)
castclass [mscorlib]System.Reflection.MethodInfo
stloc.0
ldloc.0
call void [mscorlib]System.Console::WriteLine(object)
ret
}
.method public hidebysig static void Generic<T>() cil managed
{
// Code size 2 (0x2)
.maxstack 8
IL_0000: nop
IL_0001: ret
} // end of method Program::Generic
} // end of class PreloadMethodInfo.Program
This assembles, but cannot be verified; the verification error is:
[IL]: Error: [... : PreloadMethodInfo.Program::Main][offset
0x00000000][token 0x2B000001]System.BadImageFormatException: An
attempt was made to load a program with an incorrect format.
(Exception from HRESULT: 0x8007000B) [HRESULT 0x8007000B] - An
attempt was made to load a program with an incorrect format.
I'm probably using using an invalid syntax for loading the token, but
can't figure out how to do this correctly. Or maybe this is simply
forbidden by the CLR. Can someone shed light on this? If it is
forbidden, is there something in the CLI specification to back this?
(Because I can't seem to find it.)
Fabian
===================================
This list is hosted by DevelopMentorĀ® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com