Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>If you are generating the IL yourself then it is possible. What typeof(T) does is hardcode the runtime type handle with ldtoken instruction and then calls Type.GetTypeFromHandle. When I generate IL I generate equivelent all the time. Here is some utility method from some code I wrote </p> <pre><code>/// &lt;summary&gt; /// Pushes the specified member onto the evaluation stack. /// &lt;/summary&gt; /// &lt;param name="generator"&gt;The generator.&lt;/param&gt; /// &lt;param name="member"&gt;The member.&lt;/param&gt; public static void EmitLoadMemberInfo(this ILGenerator generator, MemberInfo member) { switch (member.MemberType) { case MemberTypes.Method: generator.Emit(OpCodes.Ldtoken, member as MethodInfo); generator.Emit(OpCodes.Call, typeof(MethodBase).GetMethod("GetMethodFromHandle", BindingFlags.Public | BindingFlags.Static, null, new[] { typeof(RuntimeMethodHandle) }, null)); break; case MemberTypes.TypeInfo: generator.Emit(OpCodes.Ldtoken, member as Type); generator.Emit(OpCodes.Call, typeof(Type).GetMethod("GetTypeFromHandle", BindingFlags.Public | BindingFlags.Static)); break; case MemberTypes.Field: generator.Emit(OpCodes.Ldtoken, member as FieldInfo); generator.Emit(OpCodes.Call, typeof(FieldInfo).GetMethod("GetFieldFromHandle", BindingFlags.Public | BindingFlags.Static)); break; case MemberTypes.Constructor: generator.Emit(OpCodes.Ldtoken, member as ConstructorInfo); generator.Emit(OpCodes.Call, typeof(MethodBase).GetMethod("GetMethodFromHandle", BindingFlags.Public | BindingFlags.Static, null, new[] { typeof(RuntimeMethodHandle) }, null)); break; default: throw new NotSupportedException("Unsupported token type."); } } </code></pre> <p>I should also mention there are some mocking frameworks that kinda support that. I put an example an another post due to size</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload