gpt4 book ai didi

c# - 获取属性的值

转载 作者:行者123 更新时间:2023-11-30 16:16:28 25 4
gpt4 key购买 nike

我在 MSSQL 数据库中有一个包含约 300 列的表,我只想提取一行并获取列的所有值。我使用过这段代码,但我在使用 GetValue(,) 方法时遇到了问题。这是我的代码:

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);
}
}

我总是得到这种异常:

Object does not match target type.

最佳答案

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

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

// 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 现在返回对相关实体的引用 - 然后您获取属性描述符,并向每个描述符询问该属性的值那个对象

关于c# - 获取属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18253286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com