3 using System.Reflection;
4 using System.Reflection.Emit;
8 var dyn = DefineDynamicAssembly (AppDomain.CurrentDomain);
9 var core = TriggerLoadingSystemCore ();
10 var asm = AppDomain.CurrentDomain.GetAssemblies ();
12 if (asm [0] != typeof (object).Assembly) {
13 Console.WriteLine ("first assembly must be mscorlib, but it was {0}", asm [0]);
17 if (asm [1] != typeof (Driver).Assembly) {
18 Console.WriteLine ("second assembly must be test assembly, but it was {0}", asm [1]);
23 Console.WriteLine ("third assembly must be SRE, but it was {0}", asm [2]);
27 if (asm [3] != core) {
28 Console.WriteLine ("last assembly must be System.Core, but it was {0}", asm [3]);
35 static Assembly TriggerLoadingSystemCore ()
37 int[] x = new int[] { 1,2,3};
39 return typeof (Enumerable).Assembly;
43 static Assembly DefineDynamicAssembly (AppDomain domain)
45 AssemblyName assemblyName = new AssemblyName ();
46 assemblyName.Name = "MyDynamicAssembly";
48 AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly (assemblyName, AssemblyBuilderAccess.Run);
49 ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule ("MyDynamicModule");
50 TypeBuilder typeBuilder = moduleBuilder.DefineType ("MyDynamicType", TypeAttributes.Public);
51 ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor (MethodAttributes.Public, CallingConventions.Standard, null);
52 ILGenerator ilGenerator = constructorBuilder.GetILGenerator ();
53 ilGenerator.EmitWriteLine ("MyDynamicType instantiated!");
54 ilGenerator.Emit (OpCodes.Ret);
55 typeBuilder.CreateType ();
56 return assemblyBuilder;