创建从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);
这包括当前程序集之外的类型。