protected void EmitCastOrUnbox(Type type) { if (type.IsValueType) { _il.Emit(OpCodes.Unbox, type); _il.Emit(OpCodes.Ldobj, type); } else { _il.Emit(OpCodes.Castclass, type); } }