创建从IBlahblah继承的所有类的集合(Creating a collection of all

2019-08-20 10:45发布

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

public interface IBlahblah;

Answer 1:

假设你有一个组件(或组件列表)照照,你可以得到的,其实现一个接口类型的集合:

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

你不能“活物”,虽然实现接口的集合 - 至少在没有使用调试/分析API或类似的东西。



Answer 2:

你的意思是这样的?



Answer 3:

是的,这是可能的,这等堆栈溢出后给出了LINQ的解决方案。



Answer 4:

是的,这是可能的:

    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);

这包括当前组件外的类型。



文章来源: Creating a collection of all classes that inherit from IBlahblah