仅当属性的类型从某个基类继承时,如何递归获取对象的所有属性?
这是我的尝试:
static IEnumerable<PropertyInfo> FindProperties(object objectTree, Type targetType)
{
if (objectTree.GetType().IsAssignableFrom(targetType))
{
var properties = objectTree.GetType().GetProperties();
foreach (var property in properties)
{
yield return property;
}
foreach (var property in FindProperties(properties, targetType))
{
yield return property;
}
}
}
所以我可以打电话,
var allPropertiesOfPageTypes = FindProperties(someClass, typeof(Page));
但是,返回的属性数始终为零。我究竟做错了什么?
编辑:
我不确定这是否重要,但子类是通用类:
public abstract class MasterPage<T> : BasePage<T> where T : MasterPage<T>
继承:
public abstract class BasePage<T> : Page where T : BasePage<T>
从 Master/BasePage 继承的东西似乎返回 false IsAssignableFrom
?