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();
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值