就像是:
public IEnumerable<Type> FindDerivedTypes(Assembly assembly, Type baseType)
{
return assembly.GetTypes().Where(t => baseType.IsAssignableFrom(t));
}
如果您需要处理泛型,这会变得有些棘手(例如,传入开放List<>
类型但期望返回派生自的类型List<int>
)。否则就很简单了:)
如果你想排除类型本身,你可以很容易地做到这一点:
public IEnumerable<Type> FindDerivedTypes(Assembly assembly, Type baseType)
{
return assembly.GetTypes().Where(t => t != baseType &&
baseType.IsAssignableFrom(t));
}
请注意,这还允许您指定一个接口并查找实现它的所有类型,而不是仅仅使用类Type.IsSubclassOf
does.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)