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

mrb*_*lah 6 c#

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

我该怎么做?

Jon*_*eet 7

就像是:

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

这是罚款的简单情况,但它变得更"有趣"(读:棘手的),当你想找到"所有类型的执行IEnumerable<T>任何T"等等.

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