C#如何通过对象属性名修改值的实例


本文摘自PHP中文网,作者黄舟,侵删。

摘自:csdn

给一个对象属性赋值可以通过PropertyInfo.SetValue()方式进行赋值,但要注意值的类型要与属性保持一致。

创建对象实例的两种方法:

1.


1

var obj = Assembly.Load("AssemblyName").CreateInstance("AssemblyName"+"ClassFullName");

2.

1

2

var

 obj = Activator.CreateInstance(ClassType);

创建好实例时,现在可以给当前实例的某个属性赋值,首先获取要赋值的属性。


1

var property = obj.GetType().GetProperty("PropertyName");//此时可以使用GetProperty获取属性数组,循环进行赋值,这里主要讲解类型问题。

赋值可通过PropertyInfo.SetValue()方法,详见MSDN。

情况1,该属性类型是已知类型,例如:int


1

2

int value=500;

property.SetValue(obj,value,null);

这里需要注意value值的类型必须和属性类型一致,否则会抛出TargetException异常。

情况2,该属性类型是已知类型,原值是其他类型。例如:目标类型为int,值为string


1

2

string value="500";

property.SetValue(obj,int.TryParse(value),null);//类型转换。

前两种情况都很简单,有时业务会比较复杂,对目标类型不确定,需要程序运行时判断。

情况3,该属性类型是未知非泛型类型,不确定目标类型,如何进行类型转换。


1

2

object value="500";

property.SetValue(obj,Convert.ChangeType(value,property.PropertyType),null);//类型转换。

这样就可以解决大多数问题了。

阅读剩余部分

相关阅读 >>

c#实现与现有.net事件桥接的简单代码

.net framework类库的主要功能是什么?

c#实现表格隔行换色

c#高级编程(一)-.net体系结构

关于.net后台定时服务框架的简单介绍

.net下关于log4net的使用方法的图文代码分享

c#中noto sans字体支持韩文的实例教程

详细分析.net?core?以及与?.net?framework的关系(图)

解决visual studio 2017创建.net standard类库编译出错的问题

c#中关于async与await的使用详解

更多相关阅读请进入《csharp》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...