Здравствуйте, Злобастик, Вы писали:
З>Коллеги, добрый день!
З>Возникла следующая проблема. Есть словарь, где ключ — это идентификатор модели, а значение — объект, являющийся наследником от базового абстрактного класса AbstractModel. (Т.е. тип словаря — Dictionary<string, AbstractModel>) Классов-наследников достаточно много. Для примера назовем их ConcreteModel1, ConcreteModel2 и т.д. Задача следующая — по заданному идентификатору (ключу) необходимо привести соответствующий объект (значение) к конкретному типу. Проблема в том, что тип этот я не знаю. Пока что вижу 3 варианта решения:
З>1. Добавить в AbstractModel поле перечислимого типа, по которому можно было бы определить тип модели (возникают риски при ошибке указания нужного перечисления) З>2. Использовать рефлекшн (неэстетично) З>3. Использовать говнокод (var cm = abstractModel as ConcreteModel1; if (cm != null) { делаем приведение })
З>Задача выглядит тривиальной, но я за 10 лет ни с чем подобным не сталкивался. Может быть, есть какие-нибудь варианты элегантного решения?
Зачем приводить в итоге ? что дальше?
Например можно использовать interface