From: Joe W. <joe...@us...> - 2002-10-06 23:11:43
|
Update of /cvsroot/mockobjects/nmock/src/NMock/Dynamic In directory usw-pr-cvs1:/tmp/cvs-serv5221/src/NMock/Dynamic Modified Files: ClassGenerator.cs Log Message: Bytecode now emitted for property setters/getters Index: ClassGenerator.cs =================================================================== RCS file: /cvsroot/mockobjects/nmock/src/NMock/Dynamic/ClassGenerator.cs,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -r1.1.1.1 -r1.2 --- ClassGenerator.cs 6 Oct 2002 20:49:08 -0000 1.1.1.1 +++ ClassGenerator.cs 6 Oct 2002 23:11:39 -0000 1.2 @@ -36,19 +36,16 @@ Type proxyType = typeBuilder.CreateType(); GeneratedBase result = (GeneratedBase)Activator.CreateInstance(proxyType); result.UnderlyingMock = mock; - assemblyBuilder.Save("x.dll"); return result; } - AssemblyBuilder assemblyBuilder; - private TypeBuilder getTypeBuilder(string name, Type implementsInterface) { AppDomain appDomain = AppDomain.CurrentDomain; AssemblyName assemblyName = new AssemblyName(); assemblyName.Name = "DynamicMockAssembly"; - /*AssemblyBuilder*/ assemblyBuilder = appDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave, "c:\\temp\\"); - ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MockModule", "t.dll"); + AssemblyBuilder assemblyBuilder = appDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); + ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MockModule"); return moduleBuilder.DefineType(name, TypeAttributes.Public, typeof(GeneratedBase), new Type[]{implementsInterface}); } @@ -72,8 +69,14 @@ il.DeclareLocal(param.ParameterType); } + string methodName = m.Name; + if (methodName.StartsWith("get_") || methodName.StartsWith("set_")) + { + methodName = methodName.Substring(4); + } + il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldstr, m.Name); + il.Emit(OpCodes.Ldstr, methodName); il.Emit(OpCodes.Ldc_I4_S, paramTypes.Length); il.Emit(OpCodes.Newarr, typeof(object)); |