Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Aop/Aop/Framework/DynamicProxy
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv15938
Modified Files:
AbstractAopProxyMethodBuilder.cs
Log Message:
Proxying method with generic type parameter fails when the type resolves to a value type at runtime. [SPRNET-941]
Index: AbstractAopProxyMethodBuilder.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Aop/Aop/Framework/DynamicProxy/AbstractAopProxyMethodBuilder.cs,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** AbstractAopProxyMethodBuilder.cs 6 Feb 2008 18:28:52 -0000 1.9
--- AbstractAopProxyMethodBuilder.cs 21 May 2008 08:04:34 -0000 1.10
***************
*** 569,573 ****
--- 569,577 ----
}
+ #if NET_2_0
+ if (type.IsValueType || type.IsGenericParameter)
+ #else
if (type.IsValueType)
+ #endif
{
il.Emit(OpCodes.Box, type);
***************
*** 684,696 ****
protected static void EmitUnboxIfNeeded(ILGenerator il, Type type)
{
- if (type.IsValueType)
- {
#if NET_2_0
il.Emit(OpCodes.Unbox_Any, type);
#else
il.Emit(OpCodes.Unbox, type);
il.Emit(OpCodes.Ldobj, type);
- #endif
}
}
--- 688,703 ----
protected static void EmitUnboxIfNeeded(ILGenerator il, Type type)
{
#if NET_2_0
+ if (type.IsValueType || type.IsGenericParameter)
+ {
il.Emit(OpCodes.Unbox_Any, type);
+ }
#else
+ if (type.IsValueType)
+ {
il.Emit(OpCodes.Unbox, type);
il.Emit(OpCodes.Ldobj, type);
}
+ #endif
}
|