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

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);
时间: 2024-10-08 15:10:51

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

hibernate 普通字段延迟加载无效的解决办法

关联对象的延迟加载就不说了,大家都知道. 关于普通字段的延迟加载,尤其是lob字段,若没有延迟加载,对性能影响极大.然而简单的使用 @Basic(fetch = FetchType.LAZY) 注解并没有效果.hibernate对此的解释是Lazy property loading requires buildtime bytecode instrumentation. If your persistent classes are not enhanced, Hibernate will ign

xadmin下设置“use_bootswatch = True”无效的解决办法

环境: python 2.7 django 1.9 xadmin采用源代码的方式引入到项目中 问题: 在xadmin使用的过程中,设置"use_bootswatch = True",企图调出主题菜单,显示更多主题.然而设置了后,发现主题还是默认和bootstrap2,深入跟踪源代码,发现/xadmin/plugins/themes.py下的block_top_navmenu方法,在use_bootswatch=True的时候,就会使用httplib2去加载http://bootswat

C# LinQ 通过字段名对应的字符串取得和设置字段值!

typ.GetType().GetProperty("BPlate").GetValue(typ, null).ToString(); spa1.GetType().GetProperty(KeyString).SetValue(spa1, val, null); 返回结果是:SA-240 304 C# LinQ 通过字段名对应的字符串取得和设置字段值!,布布扣,bubuko.com

@Html.DropDownList 设置选中值无效

有时候在ASP.NET  MVC中用@Html.DropDownList 设置选中值无效,如图: 具体原因说不清,反正只要改个名字就行了!!!,如图:::

IntelliJ debug grails 无效的解决办法

从Grails 2.2以后默认run-app命令将启动Grails应用程序在一个单独的Java虚拟机. 这就是所谓的分叉的Tomcat Grails中的执行. 这样的类路径Grails构建系统和应用程序也不会干预,两个进程都有自己的内存设置. 我们可以看到在grails-app / conf / BuildConfig设置. groovy在那里我们可以找到grails.project.fork.run配置属性. 当我们想要调试程序等IDE IntelliJ IDEA我们不能使用调试命令,因为这只

ubuntu安装vmware12出现cannot ope dev/vmmon及modprobe vmmon提示密钥无效的解决办法

ubuntu12.04安装vmware12出现cannot ope dev/vmmon及modprobe vmmon提示密钥无效的解决办法 笔记本型号thinkpad E450C,前段时间删除了预装的windows,改成ubuntu12.04,并打算在ubuntu上安装一个windows虚拟机.下载vmware for linux并安装后,启动vmware提示"Cannot open /dev/vmmon: No such file or directory". 解决办法: 1.进入t

[ArchLinux]进行更新时出现错误:GPGME error: 无数据,数据库无效的解决办法/

今天在我进行系统更新pacman -Syu时,出现了如下错误: # pacman -Syu 错误:GPGME error: 无数据 错误:GPGME error: 无数据 错误:GPGME error: 无数据 错误:GPGME error: 无数据 错误:GPGME error: 无数据 :: 正在同步软件包数据库... core 已经是最新版本 0.0 B 0.00B/s 00:00 [----------------------] 0% extra 已经是最新版本 0.0 B 0.00B/

Android layout_margin 无效的解决办法

http://www.aichengxu.com/view/31025 1.如果LinearLayout中使用Android:layout_marginRight不起作用,通过测试原来在android2.x中,如果一个控件中有android:layout_gravity属性,就会出现android:layout_marginRight没有应有的效果,而是把左边距加到右边距上去,直接去掉android:layout_gravity这个属性就能解决 2.如果是在RelativeLayout中不起作用

Pycharm中不支持中文编码的解决方案。Pycharm中文报错。 Pycharm出现的部分快捷键无效及解决办法

Pycharm中不支持中文编码的解决方案.Pycharm中文报错. 1. 打开Pycharm ---->  File ----> Default setting ------> Editor -------> File Encodings ,如下图,设置成UTF-8, 然后应用 2.  点击[File]---[Setting]---[Editor]---[File and Code Templates],点击右边的[python script],在编辑框中输入: #-*-codin