diff --git a/Src/Newtonsoft.Json/Utilities/LateBoundDelegateFactory.cs b/Src/Newtonsoft.Json/Utilities/LateBoundDelegateFactory.cs index d3d1dc12..e4601148 100644 --- a/Src/Newtonsoft.Json/Utilities/LateBoundDelegateFactory.cs +++ b/Src/Newtonsoft.Json/Utilities/LateBoundDelegateFactory.cs @@ -183,18 +183,24 @@ namespace Newtonsoft.Json.Utilities generator.Emit(OpCodes.Ldarg_0); if (type.IsValueType) generator.Emit(OpCodes.Unbox, type); + else + generator.Emit(OpCodes.Castclass, type); } static void BoxIfNeeded(this ILGenerator generator, Type type) { if (type.IsValueType) generator.Emit(OpCodes.Box, type); + else + generator.Emit(OpCodes.Castclass, type); } static void UnboxIfNeeded(this ILGenerator generator, Type type) { if (type.IsValueType) generator.Emit(OpCodes.Unbox_Any, type); + else + generator.Emit(OpCodes.Castclass, type); } public static Func CreateGet(FieldInfo fieldInfo)