internal override unsafe void* ResolveToken(int token)
{
Object handle = m_scope[token];
if (handle is RuntimeTypeHandle)
{
RuntimeTypeHandle typeHandle = (RuntimeTypeHandle)handle;
return (void*)typeHandle.Value;
}
else if (handle is RuntimeMethodHandle)
{
RuntimeMethodHandle methodHandle = (RuntimeMethodHandle)handle;
return (void*)methodHandle.Value;
}
else if (handle is RuntimeFieldHandle)
{
RuntimeFieldHandle fieldHandle = (RuntimeFieldHandle)handle;
return (void*)fieldHandle.Value;
}
else if (handle is DynamicMethod)
{
DynamicMethod dynMeth = (DynamicMethod)handle;
RuntimeMethodHandle methodHandle = dynMeth.GetMethodDescriptor();
return (void*)methodHandle.Value;
}
else if (handle is GenericMethodInfo)
{
GenericMethodInfo gmi = (GenericMethodInfo)handle;
return (void*)gmi.m_method.Value;
}
else if (handle is VarArgMethod)
{
VarArgMethod vaMeth = (VarArgMethod)handle;
DynamicMethod dm = vaMeth.m_method as DynamicMethod;
if (dm == null)
return (void*)vaMeth.m_method.MethodHandle.Value;
else
return (void*)dm.GetMethodDescriptor().Value;
}
return null;
}