Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using Mono.Cecil;
- using Mono.Cecil.Cil;
- class Prog {
- static void Main () {
- var mod = ModuleDefinition.CreateModule (
- "ceciltest.exe",
- ModuleKind.Console);
- var corlib = new AssemblyNameReference (
- "mscorlib",
- new Version (4, 0, 0, 0));
- mod.AssemblyReferences.Add (corlib);
- var type = new TypeDefinition (
- "Some.Namespace",
- "SomeType",
- TypeAttributes.Class);
- mod.Types.Add (type);
- var method = new MethodDefinition (
- "Main",
- MethodAttributes.Public | MethodAttributes.Static,
- mod.TypeSystem.Void);
- type.Methods.Add (method);
- mod.EntryPoint = method;
- var dummy = new MethodReference (
- null,
- new TypeReference (null, null, null, null));
- var gp = new GenericParameter (dummy);
- dummy.GenericParameters.Add (gp);
- var target = new MethodReference (
- "CreateInstance",
- gp,
- new TypeReference ("System", "Activator", mod, corlib));
- target.GenericParameters.Add (gp);
- var gen = new GenericInstanceMethod (
- target);
- gen.GenericArguments.Add (mod.TypeSystem.Int32);
- Console.WriteLine ("{0}: {1}", target, target.Resolve ());
- Console.WriteLine ("{0}: {1}", gen, gen.Resolve ());
- var il = method.Body.GetILProcessor ();
- il.Emit (OpCodes.Call, gen);
- mod.Write ("ceciltest.exe");
- }
- }
Add Comment
Please, Sign In to add comment