コード例 #1
0
 static void GenerateDynamicMethod()
 {
     if (myConverter == null)
     {
         var method = new DynamicMethod("ConvertPtrToObjReference", typeof(T),
                                        new Type[] { typeof(IntPtr) }, StaticModule.UnsafeModule);
         var gen = method.GetILGenerator();
         gen.Emit(OpCodes.Ldarg_0);
         gen.Emit(OpCodes.Ret);
         myConverter = (Void2ObjectConverter <T>)method.CreateDelegate(typeof(Void2ObjectConverter <T>));
     }
 }
コード例 #2
0
 private static void GenerateDynamicMethod()
 {
     if (myConverter == null)
     {
         var method = new DynamicMethod("ConvertPtrToObjReference", typeof(T), new[] { typeof(IntPtr) }, StaticModule.UnsafeModule);
         var gen    = method.GetILGenerator();
         // Load first argument
         gen.Emit(OpCodes.Ldarg_0);
         // return it directly. The Clr will take care of the cast!
         // this construct is unverifiable so we need to plug this into an assembly with
         // IL Verification disabled
         gen.Emit(OpCodes.Ret);
         myConverter = (Void2ObjectConverter <T>)method.CreateDelegate(typeof(Void2ObjectConverter <T>));
     }
 }
コード例 #3
0
ファイル: Converter.cs プロジェクト: xmillies/KeeFarce
 static void GenerateDynamicMethod()
 {
     if (myConverter == null)
     {
         Console.WriteLine("[KeeFarceDLL] Dynamic Method init");
         DynamicMethod method = new DynamicMethod("ConvertPtrToObjReference", typeof(T), new Type[] { typeof(IntPtr) }, typeof(IntPtr), true);
         var           gen    = method.GetILGenerator();
         // Load first argument
         gen.Emit(OpCodes.Ldarg_0);
         // return it directly. The Clr will take care of the cast!
         // this construct is unverifiable so we need to plug this into an assembly with
         // IL Verification disabled
         gen.Emit(OpCodes.Ret);
         myConverter = (Void2ObjectConverter <T>)method.CreateDelegate(typeof(Void2ObjectConverter <T>));
         Console.WriteLine("[KeeFarceDLL] init done");
     }
 }