我需要从继承自“ClassA”的类中获取所有id属性。
我目前的代码是
IEnumerable<string> ids = dll
.GetTypes()
.Where(q => q.IsSubclassOf(typeof(ClassA)))
.Select(q => q.GetType().GetProperty("Id").GetValue(q, null).ToString());
但是我一直得到异常“对象与目标类型不匹配”。
有人有任何想法吗?
答案 0 :(得分:1)
q
是Type
个实例。您正在将Type
实例传递给GetValue
方法而不是特定类的实例。
如果您想获得某些实例属性的值,那么您需要实例。如果您的属性是 static ,则只需将null传递给GetValue
方法。
答案 1 :(得分:-1)
我认为您需要在q上删除GetType()。
q是一个类型,在选择你调用q.GetType()时,它将是Type&#39; Type&#39; 尝试:
Select(q => q.GetProperty("Id").GetValue(q, null).ToString())
编辑:
Select(q => g.GetProperty("Id"))
将返回PropertyInfo类型的对象。
然后为任何类型为q的对象调用GetValue(obj)。