创建从IBlahblah继承的所有类的集合

时间:2009-10-19 14:14:23

标签: c# oop reflection

使用反射(我猜?),是否可以创建一个方法来返回从名为IBlahblah的接口继承的所有对象的集合?

public interface IBlahblah;

4 个答案:

答案 0 :(得分:11)

假设您有要查看的程序集(或程序集列表),您可以获得实现接口的 types 集合:

var blahs = assembly.GetTypes()
                    .Where(t => typeof(IBlahblah).IsAssignableFrom(t));

您无法获得实现该接口的“活动对象”集合 - 至少在没有使用调试/分析API或类似内容的情况下。

答案 1 :(得分:4)

答案 2 :(得分:2)

是的,这是可能的,这个其他堆栈溢出post为LINQ提供了解决方案。

答案 3 :(得分:2)

是的,这是可能的:

    var result = new List<Type>();
    foreach(var assembly in AppDomain.CurrentDomain.GetAssemblies())
        foreach(var type in assembly.GetTypes())
            if (typeof(IBlahblah).IsAssignableFrom(type))
                result.Add(type);

这包括当前程序集之外的类型。