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
;