就像是:
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所说,你可以很容易地将它作为一种扩展方法.这取决于你是否认为你会重用它 - 扩展方法必须在非嵌套静态类中是一种痛苦......)