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

本文关键字:获取 属性 类型 继承 | 更新日期: 2023-09-27 18:05:01

我需要从继承"ClassA"的类中获得所有id属性。

当前代码是

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

然而,我一直得到异常"对象不匹配目标类型"。

有人有什么想法吗?

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

qType的实例。你正在传递一个Type实例给GetValue方法,而不是一个特定类的实例。

如果你想获得一些实例属性的值,那么你需要实例。如果你的属性是静态只需传递null给GetValue方法

我认为你需要在q上删除GetType()。

q是一个类型,在Select中调用q. gettype(),它将是类型'Type'试一试:

Select(q => q.GetProperty("Id").GetValue(q, null).ToString())

编辑:Select(q => g.GetProperty("Id"))将返回PropertyInfo类型的对象。然后对q类型的任何对象调用GetValue(obj)。