Advertisement
Guest User

Untitled

a guest
Oct 30th, 2014
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. using System;
  2. using System.Reflection;
  3. using System.Reflection.Emit;
  4. using System.Collections.Generic;
  5. using System.Text;
  6.  
  7. namespace ConsoleApplication24
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. DynamicMethod dynamicMethod = new DynamicMethod("", null, new Type[] { typeof(Class1), typeof(Class2) }, typeof(Program), true);
  14. ILGenerator ilGen = dynamicMethod.GetILGenerator();
  15. //
  16. // arg1.X = arg2;
  17. //
  18. ilGen.Emit(OpCodes.Ldarg_0);
  19. ilGen.Emit(OpCodes.Ldarg_1);
  20. ilGen.Emit(OpCodes.Stfld, typeof(Class1).GetField("X", BindingFlags.Instance | BindingFlags.Public));
  21. //
  22. // Console.WriteLine(arg1.X);
  23. //
  24. ilGen.Emit(OpCodes.Ldarg_0);
  25. ilGen.Emit(OpCodes.Ldfld, typeof(Class1).GetField("X", BindingFlags.Instance | BindingFlags.Public));
  26. ilGen.Emit(OpCodes.Call, typeof(Console).GetMethod("WriteLine", BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(object) }, null));
  27. ilGen.Emit(OpCodes.Ret);
  28. //
  29. // Result: ConsoleApplication24.Class2
  30.  
  31. ((Action<Class1, Class2>)dynamicMethod.CreateDelegate(typeof(Action<Class1, Class2>))).Invoke(new Class1(), new Class2());
  32. }
  33. }
  34.  
  35. class Class1
  36. {
  37. public Class1 X;
  38. }
  39.  
  40. class Class2
  41. {
  42. }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement