码迷,mamicode.com
首页 > Windows程序 > 详细

C# 反射给对象赋值遇到的问题——类型转换

时间:2015-05-12 11:04:27      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:

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

创建对象实例 

1>

var obj = Assembly.Load("AssemblyName").CreateInstance("AssemblyName"+"ClassFullName");
2>
var obj = Activator.CreateInstance(ClassType);
 
赋值
var property = obj.GetType().GetProperty("PropertyName");//此时可以使用GetProperty获取属性数组,循环进行赋值,这里主要讲解类型问题。
1>该属性类型是已知类型,例如:int
int value=500;
property.SetValue(obj,value,null);
 
2>该属性类型是已知类型,原值是其他类型。例如:目标类型为int,值为string
string value="500";
property.SetValue(obj,int.TryParse(value),null);//类型转换。
 
3>该属性类型是未知非泛型类型,不确定目标类型,如何进行类型转换。
object value="500";
property.SetValue(obj,Convert.ChangeType(value,property.PropertyType),null);//类型转换。

C# 反射给对象赋值遇到的问题——类型转换

标签:

原文地址:http://www.cnblogs.com/guohu/p/4496510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!