So you want to find all instances that implement a specific interface - not the classes, the actual objects. You need to somehow enumerate over instances of objects. I am not aware of a way to do that.
If you could, however, create some sort of common ancestor for all the relevant objects that you have (something like your own Object class) then you can add a static enumeration of all the instances that were created by registering them in the constructor. You can then simply run over them and check each instance to see if it implements the interface. The problem with this approach is, of course, that these instances will never be garbage collected, even when you are done using them because they always have a reference pointing to them.
This leads me to the concolusion that there probably isn't a "built in" way to enumerate over instances of a class or interface, or even to enumerate over all the instances in the memory because having any such enumeration object means that these instances can never be garbage collected even when you no longer have a reference to them, because they can still be "referenced". This idea condradicts the whole point in managed code... So unless you find your own way to enumerate the instances, I don't think you will be able to do that.
hope that helps :-)