Какая есть хорошая альтернатива для type-switch, чтобы в generic-методе вызывать разные методы, в зависимости от класса?
Добрый день!
Я ищу какой-то паттерн, который стал бы хорошей альтернативой type-switch.
Есть класс, который представляет собой проект (обертка стороннего COM) . В проекте есть сущности разных типов, их классы-обертки наследуются от одного класса и во многом с ними можно работать одинаково. Хочется так же одинаково получать все сущности одного типа из проекта одним geneic методом. Проблема в том, что для получения всех сущностей разных типов в COM используются разные методы. Соответственно, generic-метод для получения всех сущностей какого-то типа должен уметь в зависимости от типа сущности вызывать разные свои методы.
Может есть какая-то достойная альтернатива для type-switch в этом случае?
Dictionary словарь использовать, добавляете тип и лямбду, делегат или ссылку на метод, и все, потом просто достаете из словаря по типу Action и вызываете его.
Пробовала словарь с делегатами делать, но по логике вещей он должен быть статическим полем класса проекта. А в поле делегаты на не статические методы не запихнуть(
Роман: это если я словарь _handlers заполняю по ходу выполнения программы. А у меня заранее известны все типы и все методы им соответствующие, и я бы хотела сразу это поле инициализировать готовым словарем.
Роман: да, я понимаю, что не созданы. Значит, я могу инициализировать это поле в конструкторе при первом создании один раз и больше не возвращаться, наверное, так будет проще. Спасибо!