From: <sm...@us...> - 2003-07-26 09:56:37
|
Update of /cvsroot/nmock/nmock/src/NMock/Dynamic In directory sc8-pr-cvs1:/tmp/cvs-serv9112/src/NMock/Dynamic Modified Files: ClassGenerator.cs Log Message: Restored broken support for Longs and Remoting Index: ClassGenerator.cs =================================================================== RCS file: /cvsroot/nmock/nmock/src/NMock/Dynamic/ClassGenerator.cs,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** ClassGenerator.cs 24 Jul 2003 23:08:42 -0000 1.13 --- ClassGenerator.cs 25 Jul 2003 15:52:12 -0000 1.14 *************** *** 53,69 **** AssemblyBuilder assemblyBuilder = appDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MockModule"); ! Type superClass; ! Type[] interfaces; ! if (originalType.IsInterface) ! { ! superClass = null; ! interfaces = new Type[] {originalType}; ! } ! else ! { ! superClass = originalType; ! interfaces = new Type[0]; ! } ! return moduleBuilder.DefineType(name, TypeAttributes.Public, superClass, interfaces); } --- 53,67 ---- AssemblyBuilder assemblyBuilder = appDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MockModule"); ! return moduleBuilder.DefineType(name, TypeAttributes.Public, getSuperClass(originalType), getInterfaces(originalType)); ! } ! ! protected virtual Type getSuperClass(Type originalType) ! { ! return (originalType.IsInterface) ? null : originalType; ! } ! ! protected virtual Type[] getInterfaces(Type originalType) ! { ! return (originalType.IsInterface) ? new Type[] { originalType } : new Type[0]; } *************** *** 125,133 **** private void EmitMethodSignature(MethodInfo methodInfo, Type[] paramTypes, ILGenerator il) { ! foreach (Type paramType in paramTypes) ! { ! il.DeclareLocal(paramType); ! } ! il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldfld, mockFieldBuilder); --- 123,127 ---- private void EmitMethodSignature(MethodInfo methodInfo, Type[] paramTypes, ILGenerator il) { ! il.DeclareLocal( typeof(object) ); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldfld, mockFieldBuilder); *************** *** 175,183 **** } il.DeclareLocal(returnType); ! il.Emit(OpCodes.Stloc_0); Label l = il.DefineLabel(); il.Emit(OpCodes.Br_S, l); il.MarkLabel(l); ! il.Emit(OpCodes.Ldloc_0); } il.Emit(OpCodes.Ret); --- 169,177 ---- } il.DeclareLocal(returnType); ! il.Emit(OpCodes.Stloc_1); Label l = il.DefineLabel(); il.Emit(OpCodes.Br_S, l); il.MarkLabel(l); ! il.Emit(OpCodes.Ldloc_1); } il.Emit(OpCodes.Ret); |