关于PropertyInfo setvalue()和PropertyInfo getvalue()

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)


你可能感兴趣的:(关于PropertyInfo setvalue()和PropertyInfo getvalue())