C#函数,它接受基类名称/类型作为参数,并返回其所有子类的名称

C#函数,它接受基类名称/类型作为参数,并返回其所有子类的名称,c#,generics,reflection,base-class,C#,Generics,Reflection,Base Class,我需要编写一个函数,它接受一个基类名称并以C#返回其所有子类的名称。 大家都知道,在名称空间中,我们有几个基类,每个基类都有自己的子类。上述函数(将位于工具中)的目的是从用户处获取基类名称,然后返回其所有子类的名称。(我们可以在创建批处理文件时使用结果) 我假设我需要使用反射和泛型,但不确定如何使用。你能帮我一下吗 如果我将基类的名称作为字符串传递,函数会是什么样子? 如果我将基类名称作为泛型类型传递,应该是什么样的 评论后提问的版本: 根据答案中建议的页面,我尝试了以下函数,但它对kids和b

我需要编写一个函数,它接受一个基类名称并以C#返回其所有子类的名称。 大家都知道,在名称空间中,我们有几个基类,每个基类都有自己的子类。上述函数(将位于工具中)的目的是从用户处获取基类名称,然后返回其所有子类的名称。(我们可以在创建批处理文件时使用结果) 我假设我需要使用反射和泛型,但不确定如何使用。你能帮我一下吗

如果我将基类的名称作为字符串传递,函数会是什么样子? 如果我将基类名称作为泛型类型传递,应该是什么样的

评论后提问的版本:

根据答案中建议的页面,我尝试了以下函数,但它对kids和blahKids都返回null

 private object GetKidsOfBaseClass(string baseClass)
    {
        Type baseType = Type.GetType($"{baseClass}");
        var blahKids = AppDomain.CurrentDomain.GetAssemblies().SelectMany(ass => ass.GetTypes())
            .Where(p => p.IsSubclassOf(baseType));
        var kids = Assembly.GetAssembly(baseType).GetTypes().Where(t => t.IsSubclassOf(baseType));
        return kids;
    }
第二版在@madreflection的建议之后: 以下代码适用于我:

    private object GetKidsOfBaseClass(Type baseType)
    {
        var blahKids = 
        AppDomain.CurrentDomain.GetAssemblies().SelectMany(ass => ass.GetTypes())
            .Where(p => p.IsSubclassOf(baseType)).ToList();

        return blahKids;
    }

以下是根据我在问题中添加的评论提出的解决方案:

private object GetKidsOfBaseClass(Type baseType)
{
    var blahKids = 
    AppDomain.CurrentDomain.GetAssemblies().SelectMany(ass => ass.GetTypes())
        .Where(p => p.IsSubclassOf(baseType)).ToList();

    return blahKids;
}

你试过什么?听起来你知道它需要什么参数,你期望它返回什么。当然你有一些东西可以展示你到目前为止所做的努力。@Mad如果我在第二条评论中添加了一段代码,请你检查一下,并让我知道你的建议,谢谢@我刚刚编辑了一个问题!您传递的
基类是什么?我强烈建议接受
Type
实例而不是名称,并将其留给调用方获取
Type
实例<代码>类型。GetType不总是可靠的。好的库设计不会将消费者锁定在与库的用途无关的东西上,因为它起作用了!非常感谢。