我需要从继承"ClassA"的类中获得所有id属性。
当前代码是
IEnumerable<string> ids = dll
.GetTypes()
.Where(q => q.IsSubclassOf(typeof(ClassA)))
.Select(q => q.GetType().GetProperty("Id").GetValue(q, null).ToString());
然而,我一直得到异常"对象不匹配目标类型"。
有人有什么想法吗?
q
是Type
的实例。你正在传递一个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)。