Recently, I wanted to use a method for two different concrete classes that shared an interface. The solution? Using a generic method with type constraints.
added benefits of using enumerators to build the interface to your collection, namely the ability to deal with memory constraints and transparently handle errors.