![]() |
1
2
这是做不到的。 要找到一个对象,需要一个对它的引用。如果你没有对它的引用,但想“找到”它,这是不可能的。 |
![]() |
2
3
这将搜索所有加载的程序集。
|
![]() |
3
1
一种方法是使用MEF,它可能比使用标准反射性能更好。 基本上,您可以向所有接口实现添加一个属性,然后MEF可以扫描您的程序集(以及您让它扫描的任何文件夹中的任何其他程序集)以查找实现。 |
![]() |
4
0
因此,您希望找到实现特定接口的所有实例,而不是类和实际对象。您需要以某种方式枚举对象的多个实例。我不知道怎么做。 但是,如果你能为你拥有的所有相关对象(比如你自己的对象)创建某种共同的祖先 对象 类),然后可以添加通过在构造函数中注册创建的所有实例的静态枚举。然后您可以简单地运行它们并检查每个实例,看看它是否实现了接口。当然,这种方法的问题是,这些实例永远不会被垃圾收集,即使您使用完它们,因为它们总是有一个指向它们的引用。 这导致我得出结论,可能没有“内置”方法来枚举类或接口的多个实例,甚至无法枚举内存中的所有实例,因为拥有任何这样的枚举对象意味着,即使不再引用这些实例,也永远无法对其进行垃圾收集,因为它们仍然可以被“引用”。这个想法影响了托管代码中的整个要点。。。所以除非你找到自己的方法来列举这些例子,否则我认为你是做不到的。 希望有帮助:-) |