Advertisement
simonradev

IL

Oct 15th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.98 KB | None | 0 0
  1. public static Func<int, int, int, int> CreateCalculateMethod()
  2.         {
  3.             DynamicMethod calculateDynamicMethod = new DynamicMethod("Calculate", IntegerType, new[] { IntegerType, IntegerType, IntegerType });
  4.  
  5.             ILGenerator iLGenerator = calculateDynamicMethod.GetILGenerator();
  6.             iLGenerator.DeclareLocal(IntegerType);
  7.             iLGenerator.Emit(OpCodes.Ldarg_0);
  8.             iLGenerator.Emit(OpCodes.Ldarg_1);
  9.             iLGenerator.Emit(OpCodes.Mul);
  10.             iLGenerator.Emit(OpCodes.Stloc_0);
  11.             iLGenerator.Emit(OpCodes.Ldloc_0);
  12.             iLGenerator.Emit(OpCodes.Ldarg_2);
  13.             iLGenerator.Emit(OpCodes.Sub);
  14.             iLGenerator.Emit(OpCodes.Ret);
  15.  
  16.             return (Func<int, int, int, int>)calculateDynamicMethod.CreateDelegate(typeof(Func<int, int, int, int>));
  17.         }
  18.  
  19.         public static int Calculate(int a, int b, int c)
  20.         {
  21.             int result = a * b;
  22.  
  23.             return result - c;
  24.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement