如何查找程序集中继承特定类型的所有类型 C#

2024-03-12

如何获取从特定其他类型继承的所有类型的集合?


就像是:

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(使用前将#替换为@)

如何查找程序集中继承特定类型的所有类型 C# 的相关文章

随机推荐