反射时用SetValue方法,报“不能从目标类型扩展到基元类型”

Type objType;
System.Reflection.PropertyInfo prop;
User objUser = new User(); //比如有两个属性 Name (string类型),Age (int类型)
objType = objUser.GetType();


prop = objType.GetProperty( "Age" );
prop.SetValue(objUser,2,null);
//转换数字类型时报“不能从目标类型扩展到基元类型”错误。
奇怪ing...

这种情况主要是由于数据类型不一致,尤其是当要赋的值是从数据库里查询所得,如从数据库里查询一个bigint字段的值,而把该值直接赋给对象的int 属性,就会出现上面的错误。

对于这样的类型,用户要自己显示的把它转换为要赋值对象的属性类型。

你可能感兴趣的:(C#开发)