使用assembly.get types()获取所有类型,并使用type.isassignablefrom()检查继承。如果您需要代码,也请告诉我您是否在使用.NET 3.5。(像这样的许多反射任务使用Linq to对象更简单。)
编辑:根据要求,这里有一个例子-它在
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);
}
}
}