Guest User

Untitled

a guest
Oct 16th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. using System;
  2. using Mono.Cecil;
  3. using Mono.Cecil.Cil;
  4. class Prog {
  5. static void Main () {
  6. var mod = ModuleDefinition.CreateModule (
  7. "ceciltest.exe",
  8. ModuleKind.Console);
  9.  
  10. var corlib = new AssemblyNameReference (
  11. "mscorlib",
  12. new Version (4, 0, 0, 0));
  13.  
  14. mod.AssemblyReferences.Add (corlib);
  15.  
  16. var type = new TypeDefinition (
  17. "Some.Namespace",
  18. "SomeType",
  19. TypeAttributes.Class);
  20.  
  21. mod.Types.Add (type);
  22.  
  23. var method = new MethodDefinition (
  24. "Main",
  25. MethodAttributes.Public | MethodAttributes.Static,
  26. mod.TypeSystem.Void);
  27.  
  28. type.Methods.Add (method);
  29. mod.EntryPoint = method;
  30.  
  31. var dummy = new MethodReference (
  32. null,
  33. new TypeReference (null, null, null, null));
  34.  
  35. var gp = new GenericParameter (dummy);
  36. dummy.GenericParameters.Add (gp);
  37.  
  38. var target = new MethodReference (
  39. "CreateInstance",
  40. gp,
  41. new TypeReference ("System", "Activator", mod, corlib));
  42.  
  43. target.GenericParameters.Add (gp);
  44.  
  45. var gen = new GenericInstanceMethod (
  46. target);
  47.  
  48. gen.GenericArguments.Add (mod.TypeSystem.Int32);
  49.  
  50. Console.WriteLine ("{0}: {1}", target, target.Resolve ());
  51. Console.WriteLine ("{0}: {1}", gen, gen.Resolve ());
  52.  
  53. var il = method.Body.GetILProcessor ();
  54.  
  55. il.Emit (OpCodes.Call, gen);
  56.  
  57. mod.Write ("ceciltest.exe");
  58. }
  59. }
Add Comment
Please, Sign In to add comment