加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 搜索所有子类型的程序集?

发布时间:2020-12-15 23:51:14 所属栏目:百科 来源:网络整理
导读:我想找到从基础/接口继承的所有类型.有人有一个很好的方法来做到这一点?想法? 我知道这是一个奇怪的请求,但它是我正在玩的东西. 解决方法 使用Assembly.GetTypes()获取所有类型,使用Type.IsAssignableFrom()来检查继承.如果您需要代码,请告诉我 – 以及您
我想找到从基础/接口继承的所有类型.有人有一个很好的方法来做到这一点?想法?

我知道这是一个奇怪的请求,但它是我正在玩的东西.

解决方法

使用Assembly.GetTypes()获取所有类型,使用Type.IsAssignableFrom()来检查继承.如果您需要代码,请告诉我 – 以及您是否使用.NET 3.5. (对于LINQ to Objects,很多像这样的反射任务都比较简单.)

编辑:根据要求,这是一个例子 – 它在mscorlib中找到实现IEnumerable的所有内容.请注意,当基类型是通用的时候,生活会更难一些……

using System;
using System.Collections;
using System.Linq;
using System.Reflection;

class Test
{
    static void Main()
    {
        Assembly assembly = typeof(string).Assembly;
        Type target = typeof(IEnumerable);        
        var types = assembly.GetTypes()
                            .Where(type => target.IsAssignableFrom(type));

        foreach (Type type in types)
        {
            Console.WriteLine(type.Name);
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读