我想要从未知类型的类中获取所有ICollection<T>
属性。此外,类型T(集合所属的类型)在编译时不可知。首先,我尝试了以下方法:
foreach (var property in entity.GetType().GetProperties())
{
if (typeof(ICollection).IsAssignableFrom(property.PropertyType) || typeof(ICollection<>).IsAssignableFrom(property.PropertyType))
{
// do something
}
}
但它不能正常工作(即使对于ICollection
属性也会评估为false)。
我这样让它可以工作:
foreach (var property in entity.GetType().GetProperties())
{
var getMethod = property.GetGetMethod();
var test = getMethod.Invoke(entity, null);
if (test is ICollection)
{
// do something
}
}
但我不想执行所有的getter。为什么第一段代码不起作用?如何在不执行所有getter的情况下找到ICollection
属性?
ICollection
和ICollection<T>
是不同的类型。你真正感兴趣的是哪一个? - Jon Skeet