使用反射(我猜?),是否可以创建一个方法来返回从名为IBlahblah的接口继承的所有对象的集合?
public interface IBlahblah;
答案 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);
这包括当前程序集之外的类型。