繁体   English   中英

列出从特定类/接口继承的所有类

[英]List all classes that inherit from a specific class/interface

我有一个程序集,我想列出从特定类/接口继承的所有类。

我该怎么做?

就像是:

public static IEnumerable<Type> GetSubtypes(Assembly assembly, Type parent)
{
    return assembly.GetTypes()
                   .Where(type => parent.IsAssignableFrom(type));
}

这对于简单的情况来说很好,但是当你想要找到“所有类型为任何T实现IEnumerable<T> ”时,它变得更“有趣”(读:棘手)等。

(正如Adam所说,你可以很容易地将它作为一种扩展方法。这取决于你是否认为你会重用它 - 扩展方法必须在非嵌套静态类中是一种痛苦......)

public static IEnumerable<Type> GetTypesThatInheritFrom<T>(this Assembly asm)
{
    var types = from t in asm.GetTypes()
                where typeof(T).IsAssignableFrom(t)
                select t;
    return types;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM