当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《搜索所有子类型的程序集?》经验,为你挑选了1个好方法。

我想找到从基础/接口继承的所有类型.有人有一个很好的方法来做到这一点?想法?

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



1> Jon Skeet..:

使用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);
        }
    }
}

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有