首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性的GetValue

属性的GetValue
EN

Stack Overflow用户
提问于 2013-08-15 21:07:53
回答 1查看 149关注 0票数 3

我在MSSQL数据库中有一个表,其中有大约300列,我只想提取一行并获取列的所有值。我已经使用了这段代码,但是我对GetValue(,)方法有问题。这是我的代码:

代码语言:javascript
复制
private PropertyInfo[] GetValuesDB()
{
   ......
   var result = from val in datacTx.TableA
                where val.A == "AA" + "-" + "11" &&
                      val.B == "CC                   
                select val;
   return result.First().GetType().GetProperties();
}

...
public void MethodA()
{
  var res = GetValuesDB();
  foreach (var propertyInfo in res)
  {
    var rez = propertyInfo.GetValue(res,null);
  }
}

我总是得到这样的异常:

代码语言:javascript
复制
Object does not match target type.
EN

回答 1

Stack Overflow用户

发布于 2013-08-15 21:10:23

GetValue期望第一个参数的类型是声明属性的类型(或子类型)。

因此,您的result.First()调用返回一个对象的引用-您希望获取该对象的属性……所以这应该是您传递给GetValue的引用。您需要更改代码以返回该引用:

代码语言:javascript
复制
// Ideally, change this to a more appropriate return type...
private object GetValuesDB()
{
   ......
   var result = from val in datacTx.TableA
                where val.A == "AA" + "-" + "11" &&
                      val.B == "CC"
                select val;
   return result.First();
}

...
public void MethodA()
{
  var res = GetValuesDB();
  foreach (var propertyInfo in res.GetType().GetProperties())
  {
    var rez = propertyInfo.GetValue(res, null);
  }
}

因此,GetValuesDB现在返回对相关实体的引用-然后获取属性描述符,并向每个描述符询问该对象上该属性的值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18253286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档