首页 > Windows开发 > 详细

C# 反射 设置字段值无效的解决办法

时间:2016-02-03 10:45:48      阅读:235      评论:0      收藏:0      [点我收藏+]

FieldInfo.SetValue的原型是:void SetValue(object obj, object value)
当你传递一个值类型(结构是值类型)的时候,它要转化成object,也就是要装箱
而SetValue将作用在那个装箱产品上,而不是原来的那个结构。

解决办法就是自己装箱和拆箱子:

object boxedB = b;        //自己装箱,以便拿到装箱产品
fi.SetValue(boxedB, a);   //
b = (B)boxedB;            //拆箱并拿到被SetValue的结果
Console.WriteLine(b.a.x);

 

C# 反射 设置字段值无效的解决办法

原文:http://www.cnblogs.com/varorbc/p/5179097.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!