|
From: <sm...@us...> - 2003-07-24 23:08:45
|
Update of /cvsroot/nmock/nmock/src/NMock/Dynamic
In directory sc8-pr-cvs1:/tmp/cvs-serv24022/src/NMock/Dynamic
Modified Files:
ClassGenerator.cs
Log Message:
Index: ClassGenerator.cs
===================================================================
RCS file: /cvsroot/nmock/nmock/src/NMock/Dynamic/ClassGenerator.cs,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** ClassGenerator.cs 13 Jul 2003 13:27:06 -0000 1.12
--- ClassGenerator.cs 24 Jul 2003 23:08:42 -0000 1.13
***************
*** 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];
}
--- 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);
}
***************
*** 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);
--- 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);
***************
*** 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);
--- 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);
|