C# 获取子类和实现接口的类

  • 获取一个Assembly下的子类
var bases = Assembly
    .GetExecutingAssembly()
    .GetTypes()
    .Where(item =>
        item.IsSubclassOf(typeof(Base))
        )
        .Select(type =>
            (Base)Activator.CreateInstance(type)
            )
            .ToList();
  • 获取所有Assembly下的子类
var bases = AppDomain
    .CurrentDomain
    .GetAssemblies()
    .SelectMany(item =>
        item.GetTypes()
        )
        .Where(item =>
            item.IsSubclassOf(typeof(Base))
            )
            .Select(type =>
                (Base)Activator.CreateInstance(type)
                )
                .ToList();
  • 获取一个Assembly下的实现接口的类
var interfaceImplements = Assembly
    .GetExecutingAssembly()
    .GetTypes()
    .Where(item =>
        item.GetInterfaces().Contains(typeof(Interface))
        )
        .Select(type =>
            (Interface)Activator.CreateInstance(type)
            )
            .ToList();
  • 获取所有Assembly下的实现接口的类
var interfaceImplements = AppDomain
    .CurrentDomain
    .GetAssemblies()
    .SelectMany(item =>
        item.GetTypes()
        )
        .Where(item =>
            item.GetInterfaces().Contains(typeof(Interface))
            )
            .Select(type =>
                (Interface)Activator.CreateInstance(type)
                )
                .ToList();

版权声明:本文为yinyongxian原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。