From 28060e2a19fdd8f52df54f89157fe8ec5d598af0 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Mon, 29 Jan 2007 19:25:03 +0000 Subject: [PATCH] added new test for my latest ModuleBuilde.cs change svn path=/trunk/mcs/; revision=71905 --- mcs/tests/test-555.cs | 61 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 mcs/tests/test-555.cs diff --git a/mcs/tests/test-555.cs b/mcs/tests/test-555.cs new file mode 100644 index 00000000000..2fa51da8e1b --- /dev/null +++ b/mcs/tests/test-555.cs @@ -0,0 +1,61 @@ +using System; +using System.Reflection; +using System.Reflection.Emit; + +public class Test +{ + public static int Main() + { + AssemblyName assemblyName = new AssemblyName (); + assemblyName.Name = "TestAssembly"; + AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly (assemblyName, AssemblyBuilderAccess.Run); + + ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule ("TestModule"); + TypeBuilder typeBuilder = moduleBuilder.DefineType ("TestType", TypeAttributes.Public); + + FieldBuilder fieldBuilder = typeBuilder.DefineField ("TestField", + typeof (int), + FieldAttributes.Private); + + + PropertyBuilder propertyBuilder = typeBuilder.DefineProperty ("TestProperty", + PropertyAttributes.HasDefault, + typeof (int), + new Type[] { typeof (int) }); + + MethodBuilder getMethodBuilder = typeBuilder.DefineMethod ("TestGetMethod", + MethodAttributes.Public, + typeof (int), + new Type[] { }); + + + ILGenerator IL = getMethodBuilder.GetILGenerator(); + + IL.Emit (OpCodes.Ldarg_0); + IL.Emit (OpCodes.Ldfld, fieldBuilder); + IL.Emit (OpCodes.Ret); + + + MethodBuilder setMethodBuilder = typeBuilder.DefineMethod ("TestSetMethod", + MethodAttributes.Public, + null, + new Type[] { typeof(int) }); + IL = setMethodBuilder.GetILGenerator(); + + IL.Emit (OpCodes.Ldarg_0); + IL.Emit (OpCodes.Ldarg_1); + IL.Emit (OpCodes.Stfld, fieldBuilder); + IL.Emit (OpCodes.Ret); + + propertyBuilder.SetGetMethod (getMethodBuilder); + propertyBuilder.SetSetMethod (setMethodBuilder); + + typeBuilder.CreateType (); + + Type type = moduleBuilder.GetType ("TestType", true); + + PropertyInfo propertyInfo = type.GetProperty ("TestProperty"); + + return 0; + } +} -- 2.25.1