我试图在以下方法中从泛型类型中获取属性的值,但是我收到上述错误:
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想要属性生活的类型吗?
有没有人对此有任何见解?
谢谢!
答案 0 :(得分:3)
不,GetValue
想要一个实例,如果该成员是静态的,则为null。
var s = p.GetValue(table, null);
答案 1 :(得分:0)
p.GetValue(type, null)
想要从中检索值的类型的实例 - 在这种情况下,您可能需要该列,但您没有方便的实例(因为你所做的只是检索PropertyInfo的。)
您仍然可以选择PropertyInfo(作为一次性操作),因为它们适用于类型,但您还需要迭代列并使用相应的PropertyInfo符合条件的每列(即列名称为'xyz')。
我会建议一些代码,但你当前的例子很混乱,所以很难确切地说出你想要做什么。