Я не уверен, что правильно понял ваш вопрос, но ...
У меня есть сумка свойств универсальных объектов, и я хотел бы, чтобы поиск был делегирован универсальному методу.
... звучит так, будто вы ищете информацию о "двойной диспетчеризации"?
Представьте, что у вас есть три класса:
abstract class A {}
class B extends A {}
class C extends A {}
И два способа сделать что-то с объектами типа B и C:
void DoSomething(B obj) {}
void DoSomething(C obj) {}
Проблема в том, что когда у вас есть переменная статического типа A ...:
A a = new B();
... вы не можете вызвать DoSomething (a), потому что во время компиляции известен только его статический тип (A), поэтому компилятор не может решить, должен ли он вызывать метод DoSomething (B obj) или DoSomething (C obj).
Это - то, где двойная диспетчеризация входит. Некоторые языки поддерживают это из коробки, другие как C ++, C # и Java не делают. Но вы можете реализовать это и на этих языках. Для примера см .:
http://en.wikipedia.org/wiki/Double_dispatch
И
http://en.wikipedia.org/wiki/Visitor_pattern