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

问题描述 投票:0回答:2

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

如果我将基类的名称作为字符串传递,该函数将如何?以及如果我将基类名称作为通用类型传递,应该如何?

c# generics reflection base-class
2个回答
0
投票

是的,您需要使用反射,但是要完全取决于您的框架,here .NET3.5的一个示例


0
投票

基于您建议我尝试以下功能的页面,但返回空值

 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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.