Re[2]: Проблема с приведением типов
От: Злобастик  
Дата: 27.01.12 06:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Злобастик, Вы писали:


З>>Коллеги, добрый день!


З>>Возникла следующая проблема. Есть словарь, где ключ — это идентификатор модели, а значение — объект, являющийся наследником от базового абстрактного класса AbstractModel. (Т.е. тип словаря — Dictionary<string, AbstractModel>) Классов-наследников достаточно много. Для примера назовем их ConcreteModel1, ConcreteModel2 и т.д. Задача следующая — по заданному идентификатору (ключу) необходимо привести соответствующий объект (значение) к конкретному типу. Проблема в том, что тип этот я не знаю. Пока что вижу 3 варианта решения:


З>>1. Добавить в AbstractModel поле перечислимого типа, по которому можно было бы определить тип модели (возникают риски при ошибке указания нужного перечисления)

З>>2. Использовать рефлекшн (неэстетично)
З>>3. Использовать говнокод (var cm = abstractModel as ConcreteModel1; if (cm != null) { делаем приведение })

З>>Задача выглядит тривиальной, но я за 10 лет ни с чем подобным не сталкивался. Может быть, есть какие-нибудь варианты элегантного решения?



А>Зачем приводить в итоге ? что дальше?

А>Например можно использовать interface

Конкретный тип нужен для того, чтобы понять, каким алгоритмом его обрабатывать. А интерфейс как поможет? Я что-то в упор не вижу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.