static DynamicMethodTestClass()
        {
            Type[] writeLineArgs = { typeof(string) };

            //dynamic method to call static writeline
            dmCallStaticWriteLine = new DynamicMethod("WriteLineStatic",
                                                      null,
                                                      writeLineArgs,
                                                      typeof(DynamicMethodTestClass).Module);

            MethodInfo consoleWriteLine =
                typeof(Console).GetMethod("WriteLine", writeLineArgs);

            ILGenerator ilCallStatic = dmCallStaticWriteLine.GetILGenerator();

            ilCallStatic.Emit(OpCodes.Ldarg_0);
            ilCallStatic.EmitCall(OpCodes.Call, consoleWriteLine, null);
            ilCallStatic.Emit(OpCodes.Ret);

            staticWriteLineDelegate = (WriteLineInvoker)dmCallStaticWriteLine.CreateDelegate(typeof(WriteLineInvoker));

            //dynamic method to call instance writeline
            Type[] instanceWriteLineArgs = { typeof(object), typeof(string) };

            dmCallInstanceWriteLine = new DynamicMethod("WriteLineInstance",
                                                        null,
                                                        instanceWriteLineArgs,
                                                        typeof(DynamicMethodTestClass).Module);

            MethodInfo instanceWriteLine =
                typeof(WriteLineClass).GetMethod("WriteLine", writeLineArgs);

            ILGenerator ilCallInstance = dmCallInstanceWriteLine.GetILGenerator();

            ilCallInstance.Emit(OpCodes.Ldarg_0);
            ilCallInstance.Emit(OpCodes.Ldarg_1);
            ilCallInstance.EmitCall(OpCodes.Call, instanceWriteLine, null);
            ilCallInstance.Emit(OpCodes.Ret);

            instanceWriteLineDelegate = (InstanceWriteLineInvoker)dmCallInstanceWriteLine.CreateDelegate(typeof(InstanceWriteLineInvoker));
        }
        static DynamicMethodTestClass()
        {
            Type[] writeLineArgs = { typeof(string) };

            //dynamic method to call static writeline
            dmCallStaticWriteLine = new DynamicMethod("WriteLineStatic",
                null,
                writeLineArgs,
                typeof(DynamicMethodTestClass).Module);

            MethodInfo consoleWriteLine =
                typeof(Console).GetMethod("WriteLine", writeLineArgs);

            ILGenerator ilCallStatic = dmCallStaticWriteLine.GetILGenerator();
            ilCallStatic.Emit(OpCodes.Ldarg_0);
            ilCallStatic.EmitCall(OpCodes.Call, consoleWriteLine, null);
            ilCallStatic.Emit(OpCodes.Ret);

            staticWriteLineDelegate = (WriteLineInvoker)dmCallStaticWriteLine.CreateDelegate(typeof(WriteLineInvoker));

            //dynamic method to call instance writeline
            Type[] instanceWriteLineArgs = { typeof(object), typeof(string) };

            dmCallInstanceWriteLine = new DynamicMethod("WriteLineInstance",
                null,
                instanceWriteLineArgs,
                typeof(DynamicMethodTestClass).Module);

            MethodInfo instanceWriteLine =
                            typeof(WriteLineClass).GetMethod("WriteLine", writeLineArgs);

            ILGenerator ilCallInstance = dmCallInstanceWriteLine.GetILGenerator();
            ilCallInstance.Emit(OpCodes.Ldarg_0);
            ilCallInstance.Emit(OpCodes.Ldarg_1);
            ilCallInstance.EmitCall(OpCodes.Call, instanceWriteLine, null);
            ilCallInstance.Emit(OpCodes.Ret);

            instanceWriteLineDelegate = (InstanceWriteLineInvoker)dmCallInstanceWriteLine.CreateDelegate(typeof(InstanceWriteLineInvoker));

        }