创建从IBlahblahinheritance的所有类的集合

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

public interface IBlahblah; 

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

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

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

你的意思是这样的吗?

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

是的,这是可能的:

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

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