我试图在以下方法中从泛型类型获得属性的值,但我收到上述错误:
private static void GetValue<T>(T table)
{
Type type = typeof(T);
PropertyInfo[] props = type.GetProperties().Where(p => p.PropertyType.Name.ToLower() != "column").ToArray();
PropertyInfo[] colProps = type.GetProperties().Where(p => p.PropertyType.Name.ToLower() == "column").ToArray();
foreach (PropertyInfo p in props)
foreach (PropertyInfo cp in colProps)
{
if (cp.Name.StartsWith(p.Name))
{
var s = p.GetValue(type, null);
}
}
}
GetValue想要属性所在的类型,对吗?
有人对此有什么见解吗?
谢谢!
不,GetValue
需要一个实例,如果成员是静态的,则为null。
var s = p.GetValue(table, null);
p.GetValue(type, null)
想要的实例类型的值是被检索-在这种情况下,你可能想要的列,但你没有它的一个实例方便(因为你所做的是检索PropertyInfo的)。
你仍然可以像你一样选择PropertyInfo(作为一次性操作),因为它们适用于类型,但是你还需要迭代列,并在符合你的标准的每个列上使用适当的PropertyInfo(即列名是'xyz')。
我会建议一些代码,但你目前的例子是相当混乱,所以很难告诉你到底是什么你想做的