如题

解决方案 »

  1.   

    应该是要用到.net的反射(reflecting)
      

  2.   

    public class Base {}
    public class Sub1 : Base {}
    public class Sub2 : Base {}
    public class Sub3 : Sub1 {}public class Program
    {
    static IList<Type> FindSubType(Assembly assembly, Type baseType)
    {
    Type[] types = assembly.GetTypes();
    IList<Type> subs = new List<Type>(); foreach (Type t in types)
    {
    Type b = t.BaseType; do
    {
    if (b.Equals(baseType))
    {
    subs.Add(t);
    break;
    } b = b.BaseType;
    }
    while (b != null);
    } return subs;
    } static void Main(string[] args)
    {
    IList<Type> subs = FindSubType(Assembly.GetExecutingAssembly(), typeof(Base));
    foreach (Type t in subs) Console.WriteLine(t.FullName); }
    }