从继承自特定类型的类中获取属性值

时间:2014-05-23 12:02:44

标签: c# reflection

我需要从继承自“ClassA”的类中获取所有id属性。

我目前的代码是

IEnumerable<string> ids = dll
            .GetTypes()
            .Where(q => q.IsSubclassOf(typeof(ClassA)))
            .Select(q => q.GetType().GetProperty("Id").GetValue(q, null).ToString());

但是我一直得到异常“对象与目标类型不匹配”。

有人有任何想法吗?

2 个答案:

答案 0 :(得分:1)

qType个实例。您正在将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)。