C# 中属性PropertyInfo的setvalue用法说明
下面是关于setvalue方法的介绍以及错误简介
用索引化属性的可选索引值设置指定对象的python基础教程该属性值。
C#
public virtual void SetValue (object obj, object value, object[] index);
参数
obj Object
将设置其属性值的对象。
value Object
新的属性值。
index Object[]
索引化属性的可选索引值。 对于非索引化属性,该值应为 null。
实现
SetValue(Object, Object, Object[])
异常
ArgumentException
index 数组不包含所需的参数类型。
或 找不到该属性的 set 取值函数。
或 - value 无法转换为 PropertyType的c#教程类型。
TargetException
在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获 Exception。
该对象与目标类型不匹配,或者某属性是实例属性但 obj 为 null。
TargetParameterCountException
index 中的参数数量与索引属性采用的参数数量不匹配。
MethodAccessException
在适用于 Windows 应用商店应用的 .NET 或可移植类库中,改为捕获基类异常 MemberAccessException。
试图非法访问类中的私有或受保护方法。
TargetInvocationException
设置属性值时出错。 例如,为一个索引属性指定的索引值超出范围。 InnerException 属性指示出错的原因。
例子
Dictionary<string, string> dic = new Dictionary<string, string>();foreach (Control control in this.Controls )//获取控件中所有值,添加到字典中{if (control is TextBox ||control is ComboBox ||control is DateTimePicker ){dic.Add (control.Name, control.Text);}}PropertyInfo[] propertys = incomingnews.GetType().GetProperties();foreach (PropertyInfo property in propertys)//运用propertyinfo的映射方法,给实体类incomingnews的所有属性赋值。{for (int i = 0; i<dic.Count; i++){property.SetValue(incomingnews, dic[property.Name].ToString(), null);}}
之前有个小错误一直弄不出来,后来看了错误提示“index 数组不包含所需的参数类型。
或 找不到该属性的 set 取值函数。
或 value 无法转换为 PropertyType的类型。”
发现自己想要赋值的实体类不是实体的属性,而是实体的字段,所以setvalue方法就捕捉不到我想要赋值的这些字段,只需要将这些字段设置为自动属性即可。
补充:C# Property.SetValue()利用反射给某个泛型对象的属性赋值的问题
问题描述:
在一个泛型方法中,实例化一个泛型对象后,利用反射获取该泛型中的所有属性,再给该对象的这些属性赋值,打断点发现,泛型对象被实例化出来了,没有问题;所要赋值的属性值也没有问题,但调用Property.SetValue()后,泛型对象中的值就是赋不上。
问题解决:
调用该泛型方法时,传入的类型是个结构体。。这个方法只支持class,不支持struct。
C# 中属性PropertyInfo的setvalue用法说明相关推荐
- 【转】C#中属性PropertyInfo的使用
昨天编程遇到一个问题两个类字段都是二十多个,其中有十多个是相同的,需要将一个类的字段赋值给另外一个类,开始的自己想手动的一个个去赋值,后来想来一下C#基础知识,用PropertyInfo就可以解决类似 ...
- C#中属性PropertyInfo的使用
昨天编程遇到一个问题两个类字段都是二十多个,其中有十多个是相同的,需要将一个类的字段赋值给另外一个类,开始的自己想手动的一个个去赋值,后来想来一下C#基础知识,用PropertyInfo就可以解决类似 ...
- c# 中属性PropertyInfo的使用案例(完整代码)
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...
- Python面向对象程序设计中属性的作用与用法
公开的数据成员可以在外部随意访问和修改,很难保证用户进行修改时提供新数据的合法性,数据很容易被破坏,并且也不符合类的封装性要求.解决这一问题的常用方法是定义私有数据成员,然后设计公开的成员方法来提供对 ...
- [转载] python中string函数的用法_python中string模块各属性以及函数的用法
参考链接: Python中的string.octdigits 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符 ...
- 通过.NET反射动态调用SetValue方法给属性PropertyInfo动态类型赋值
注意:若不动态转换属性的值,简单调用SetValue方法赋值经常出错!特别是日期类型.带符号的数字类型等. 解决方案: 通过TypeDescriptor.GetConverter方法获取对应数值类型的 ...
- java中的cascade,详解Hibernate cascade级联属性的CascadeType的用法
详解hibernate cascade级联属性的cascadetype的用法 cascade(级联) 级联在编写触发器时经常用到,触发器的作用是当 主控表信息改变时,用来保证其关联表中数据同步更新.若 ...
- 属性PropertyInfo的使用
一,如果两个类中有大部分的字段相同,需要将其中一个类赋值给另外一个类. 定义Person类: 1 2 3 4 5 6 7 8 9 10 11 public class Person { ...
- MapInfo中常用查询函数及用法
MapInfo中常用查询函数及用法: 函数用途 语法 备注 图层中选点 Str$(obj)="point": Str(String)表示字符串:point表示点: 图层中选线 St ...
- jquery中this与$(this)的用法区别.
2019独角兽企业重金招聘Python工程师标准>>> jquery中this与$(this)的用法区别.先看以下代码: $("#textbox").hover( ...
最新文章
- loadrunner 如何做关联
- python3.7和3.8的区别-python3.8.0与3.7.0哪个好?
- 带哨兵的冒泡排序_冒泡排序的优化以及快排过程及优化
- Spark笔记:复杂RDD的API的理解(上)
- Activiti工作流框架学习(一)环境的搭建和数据表的了解
- BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)
- UIButton 详解
- 键入强力推进并解决强转
- docker curl: (56) Recv failure: Connection reset by peer问题解决方法
- Python 列表内【自定义排序】
- 使用OpenCV中的imread()内存报错问题
- 因为相信所以看见,既然看见注定坚信《7》
- 碎片化时间学习,这几个在线视频学习网站值得拥有!
- MySQL 的安装与启动
- 安卓应用程序配置文件存放位置
- 基于主成分分析法的安全评价模型
- C++学习 - lambada表达式
- python itchat判断加入新新好友_python itchat 群好友助手
- 得了糖尿病,千万不能这么做
- facebook使用教程_您可以在Facebook上使用假名吗?