コード例 #1
0
        public static ILGenerator ReturnFromMethodOnObject(this ILGenerator generator, MethodInfo method)
        {
            if (typeof(void) == method.ReturnType)
            {
                generator.AndEmit(OpCodes.Ldnull);
            }
            else if (method.ReturnType.IsValueType)
            {
                generator.AndEmit(OpCodes.Box, method.ReturnType);
            }

            return(generator.AndReturnObject());
        }
コード例 #2
0
 public static ILGenerator AndPushElementFromArrayAtIndexOnStackOntoStack(this ILGenerator generator)
 {
     return(generator.AndEmit(OpCodes.Ldelem_Ref));
 }
コード例 #3
0
 public static ILGenerator AndReturnObject(this ILGenerator generator)
 {
     return(generator.AndEmit(OpCodes.Ret));
 }
コード例 #4
0
 public static ILGenerator AndGotoLabelIfTop2ItemsOnStackAreEqual(this ILGenerator generator, Label arg)
 {
     return(generator.AndEmit(OpCodes.Beq, arg));
 }
コード例 #5
0
 public static ILGenerator AndThrowExceptionFromStack(this ILGenerator generator)
 {
     return(generator.AndEmit(OpCodes.Throw));
 }
コード例 #6
0
 public static ILGenerator AndPushNewObjectOntoStack(this ILGenerator generator, ConstructorInfo arg)
 {
     return(generator.AndEmit(OpCodes.Newobj, arg));
 }
コード例 #7
0
 public static ILGenerator AndPushInt32AsInt32OntoStack(this ILGenerator generator, int arg)
 {
     return(generator.AndEmit(OpCodes.Ldc_I4, arg));
 }
コード例 #8
0
 public static ILGenerator AndPushArrayLengthOntoStack(this ILGenerator generator)
 {
     return(generator.AndEmit(OpCodes.Ldlen));
 }
コード例 #9
0
 public static ILGenerator AndPushArgumentSOntoStack(this ILGenerator generator)
 {
     return(generator.AndEmit(OpCodes.Ldarg_S));
 }
コード例 #10
0
 public static ILGenerator AndInvokeMethodOnObject(this ILGenerator generator, MethodInfo method)
 {
     return(generator.AndEmit(method.IsFinal ? OpCodes.Call : OpCodes.Callvirt, method));
 }
コード例 #11
0
 public static ILGenerator AndUnboxArgument(this ILGenerator generator, Type parameterType)
 {
     return(generator.AndEmit(OpCodes.Unbox_Any, parameterType));
 }