var property = obj.GetType().GetProperty(“PropertyName”);
表示获取类obj的属性PropertyName
PropertyInfo[] propertys = t.GetType().GetProperties();
表示获取类t的所有属性
//遍历该对象的所有属性
foreach (PropertyInfo pi in propertys)
{
tempName = pi.Name;//将属性名称赋值给临时变量
//检查DataTable是否包含此列(列名==对象的属性名)
if (dt.Columns.Contains(tempName))
{
// 判断此属性是否有Setter
if (!pi.CanWrite) continue;//该属性不可写,直接跳出
//取值
object value = dr[tempName];
//如果非空,则赋给对象的属性
if (value != DBNull.Value)
pi.SetValue(t, value, null);
}
}
利用反射对类的属性进行赋值时,会用到setValue方法
这个方法有 3各参数,第一个表示类t,第二个表示属性值,第3个详细讲解
该属性类型是已知基本类型可以直接将变量传入, 例如:string
var value=”wangheng.org”;
property.SetValue(obj,value,null);
这里需要注意value值的类型必须和属性类型一致,否则会抛出TargetException异常。
如果原值是其他类型。例如:目标类型为int,值为string
string value=”100″;
property.SetValue(obj,int.TryParse(value),null);//类型转换。
getValue(obj,null)