我想找到从基础/接口继承的所有类型.有人有一个很好的方法来做到这一点?想法?
我知道这是一个奇怪的请求,但它是我正在玩的东西.
使用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); } } }