c#:如何使用泛型方法获取子类的名称并将它们放入集合中

本文关键字:集合 何使用 泛型方法 获取 子类 | 更新日期: 2023-09-27 18:18:11

这里有一个问题:

有一个父类Class01,它有两个子类:Subclass0101Subclass0102Class01及其子类还没有实例化。我们需要

  1. 枚举Class01中的所有子类。
  2. 将它们放入列表集合并输出该集合的内容。
  3. 使之尽可能通用,使用父类的名称(如<Class1>或左右-我不确定符号是否正确)。这样,如果我们有Class02SubClass0201SubClass0202的子类,这个方法将是通用的。

你会是如此善良的帮助我们与代码组成,因为我无法组成现有的答案到一个项目?提前非常非常感谢你!!

这是我的意图:

namespace Temp
{
    class Program
    {
        static void Main(string[] args)
        {
        // Not sure what to put here
        Show<Class01>
        // Not sure what to put here
        public static Show<T1>
        {
            // and here
        }
    }
    class Class01 {}
    class SubClass0101 : Class01 {}
    class SubClass0102 : Class01 { }
    class Class02 { }
    class SubClass0201 : Class02 { }
    class SubClass0202 : Class02 { }
}

c#:如何使用泛型方法获取子类的名称并将它们放入集合中

假设子类在同一程序集中:

public static IEnumerable<Type> GetAllSubTypesInSameAssembly(this Type type)
{
    return type.Assembly
               .GetTypes()
               .Where(t => t != type && type.IsAssignableFrom(t));
}