使用类型为' System.Int64'的反射对象从wcf转换数据无法转换为' System.Int32'

时间:2016-06-09 15:08:47

标签: c# json wcf reflection int

我从wcf函数WebMessageFormat = Json中检索数据表,然后使用反射设置数据协定的属性。我在int字段上收到以下错误 -

  

类型对象&Systems.Int64'无法转换为类型' System.Int32

有人可以解释这是什么以及如何解决?

1 个答案:

答案 0 :(得分:1)

在转换盒装值类型值时,必须强制转换为正确的类型。例如:

var myLong = (object)42L;

var intValue = (int)myLong; // WRONG - myLong is a boxed long, not int
var intValue2 = (int)(long)myLong; // CORRECT - myLong is unboxed first, then converted

请注意,如果OverflowException的大小不足以包含int值,即使正确取消装箱值,也可能会获得long