反思 - 检查父类

时间:2014-05-02 12:05:49

标签: c# reflection

如何检查类是否继承自我的类DataSource(抽象类)。

这是我得到的:

var q = from t in Assembly.Load(new AssemblyName("DefaultDataSources")).GetTypes()
                where t.IsClass
                select t;

我不知道要添加什么条件:(

2 个答案:

答案 0 :(得分:5)

听起来你只是想要:

var query = Assembly.Load(...)
                    .GetTypes()
                    .Where(t => typeof(DataSource).IsAssignableFrom(t));

IsAssignableFrom部分是有趣的部分,但我给出了完整的查询,因为这是一个很好的例子,一个查询表达式只是妨碍了 - 一次调用{{1}扩展方法更简单。)

答案 1 :(得分:2)

IsAssignableFrom()。

此链接显示了相反的过程 - 发现基类的所有派生。

Discovering derived types using reflection