获取指定基类的所有子类类型
使用反射
/// <summary>
/// 获取指定基类的所有子类类型
/// </summary>
/// <param name="typeBase">基类</param>
/// <returns>指定基类的所有子类类型</returns>
public static IEnumerable<Type> GetTypes(Type typeBase)
{
return AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes())
.Where(type => type.IsClass && !type.IsAbstract && typeBase.IsAssignableFrom(type));
}
使用
GetTypes(typeof(ILogger));
使用TypeCache
使用
TypeCache.GetTypesDerivedFrom<ILogger>();