下面是关于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用法说明相关推荐

  1. 【转】C#中属性PropertyInfo的使用

    昨天编程遇到一个问题两个类字段都是二十多个,其中有十多个是相同的,需要将一个类的字段赋值给另外一个类,开始的自己想手动的一个个去赋值,后来想来一下C#基础知识,用PropertyInfo就可以解决类似 ...

  2. C#中属性PropertyInfo的使用

    昨天编程遇到一个问题两个类字段都是二十多个,其中有十多个是相同的,需要将一个类的字段赋值给另外一个类,开始的自己想手动的一个个去赋值,后来想来一下C#基础知识,用PropertyInfo就可以解决类似 ...

  3. c# 中属性PropertyInfo的使用案例(完整代码)

    using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...

  4. Python面向对象程序设计中属性的作用与用法

    公开的数据成员可以在外部随意访问和修改,很难保证用户进行修改时提供新数据的合法性,数据很容易被破坏,并且也不符合类的封装性要求.解决这一问题的常用方法是定义私有数据成员,然后设计公开的成员方法来提供对 ...

  5. [转载] python中string函数的用法_python中string模块各属性以及函数的用法

    参考链接: Python中的string.octdigits 任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符 ...

  6. 通过.NET反射动态调用SetValue方法给属性PropertyInfo动态类型赋值

    注意:若不动态转换属性的值,简单调用SetValue方法赋值经常出错!特别是日期类型.带符号的数字类型等. 解决方案: 通过TypeDescriptor.GetConverter方法获取对应数值类型的 ...

  7. java中的cascade,详解Hibernate cascade级联属性的CascadeType的用法

    详解hibernate cascade级联属性的cascadetype的用法 cascade(级联) 级联在编写触发器时经常用到,触发器的作用是当 主控表信息改变时,用来保证其关联表中数据同步更新.若 ...

  8. 属性PropertyInfo的使用

    一,如果两个类中有大部分的字段相同,需要将其中一个类赋值给另外一个类. 定义Person类: 1 2 3 4 5 6 7 8 9 10 11 public class Person {         ...

  9. MapInfo中常用查询函数及用法

    MapInfo中常用查询函数及用法: 函数用途 语法 备注 图层中选点 Str$(obj)="point": Str(String)表示字符串:point表示点: 图层中选线 St ...

  10. jquery中this与$(this)的用法区别.

    2019独角兽企业重金招聘Python工程师标准>>> jquery中this与$(this)的用法区别.先看以下代码: $("#textbox").hover( ...

最新文章

  1. loadrunner 如何做关联
  2. python3.7和3.8的区别-python3.8.0与3.7.0哪个好?
  3. 带哨兵的冒泡排序_冒泡排序的优化以及快排过程及优化
  4. Spark笔记:复杂RDD的API的理解(上)
  5. Activiti工作流框架学习(一)环境的搭建和数据表的了解
  6. BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数(数位DP+恶心细节)
  7. UIButton 详解
  8. 键入强力推进并解决强转
  9. docker curl: (56) Recv failure: Connection reset by peer问题解决方法
  10. Python 列表内【自定义排序】
  11. 使用OpenCV中的imread()内存报错问题
  12. 因为相信所以看见,既然看见注定坚信《7》
  13. 碎片化时间学习,这几个在线视频学习网站值得拥有!
  14. MySQL 的安装与启动
  15. 安卓应用程序配置文件存放位置
  16. 基于主成分分析法的安全评价模型
  17. C++学习 - lambada表达式
  18. python itchat判断加入新新好友_python itchat 群好友助手
  19. 得了糖尿病,千万不能这么做
  20. facebook使用教程_您可以在Facebook上使用假名吗?

热门文章

  1. 微信动图表情包制作教程(ok时隔一年我来把它写完了)
  2. 双频wifi是什么意思 双频wifi好处有哪些
  3. ckeditor5加字数_CKEditor5 输入文字时拼音和汉字同时输入问题
  4. 图片去底色怎么去?图片怎么去底色变透明?
  5. 使用决策树预测隐形眼镜类型
  6. typora激活方法及使用教程
  7. python数学符号读法大全_数学符号读法大全
  8. pojo和vo的含义
  9. QQ浏览器的历史记录在那 QQ浏览器查看浏览历史的方法
  10. OpenGL学习(七)通过assimp库读取多种格式的模型