考虑以下类的层次结构:基类A、从A继承的类B和C以及从B继承的类D。

public class A     {...}
public class B : A {...}
public class C : A {...}
public class D : B {...}

我可以使用以下代码查找A的所有子类,包括D:

var baseType = typeof(A);
var assembly = typeof(A).Assembly;
var types = assembly.GetTypes().Where(t => t.IsSubclassOf(baseType));

但我只需要找到A的直接子类(例如B和C),并排除所有不是直接从A继承的类(例如D)。知道怎么做吗?

等待你的阿公等待你的阿公提问于
0stargazer0回答于
已采纳

对于每种类型,请检查

type.BaseType == typeof(A)

或者,你可以直接把它放在一起:

var types = assembly.GetTypes().Where(t => t.BaseType == typeof(baseType));

回答过的其他问题

深度学习的主要框架有哪些可以通过腾讯云服务器学习?

腾讯正式发布了旗下深度学习平台DI-X(Data Intelligence X),可以去这个平台了解学习。

如何给数据加密技术选择并使用密钥为防止数据库数据外泄?

主要加密算法如下: DES DES,全称Data Encryption Standard,是上一代标准对称加密算法,现已不推荐使用。 密钥:DES是一种将64bit的明文加密成64bit的密文的对称密码算法,它的密钥长度是64bit(每隔7bit会设置一个用于错误检查的bit,因...... 展开详请

如何解决找不到com.android.tools.build:gradle:3.0.1的问题?

这样试试: build.gradle (project) ​ dependencies { classpath 'com.android.tools.build:gradle:+' ..... #more lines here ...... 展开详请

由于CORS访问限制本地mp3文件,MediaElementAudioSource输出零

初始化Audio对象后,添加以下内容:

audio.crossOrigin = "anonymous";

这将防止CORS访问限制。

云数据库MySQL的用户名和密码如何获取?

云数据库MySQL默认用户名是root,密码是第一次点击云数据库实例后的“配置”按钮,进行初始化时用户自定义设置的。

直播服务中的视频是否会显示腾讯云logo?

关于作者

所属标签

扫码关注云+社区