|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.05.2014, 12:59 | #1 |
Новичок
Джуниор
Регистрация: 04.05.2014
Сообщений: 2
|
Не получается пройтись по коллекции через foreach и получить доступ к полям
Добрый день.
Есть коллекция<object>, которая содержит экземпляры различных классов,например мост, здание. У классов большая часть одинаковых полей (например материал, ширина), но есть и индивидуальные для класса. Проблема в следующем, мне нужно пройтись по коллекции экземпляров классов с помощью foreach , выполнить определенные действия и получить доступ к полям классов. Пройтись по элементам коллекции можно используя общий интерфейс для всех классов, но тогда мне придется в общем интерфейсе прописать абсолютно все поля классов, и реализовать в классах поля , которые к классу отношения не имеют. Не подскажите как выйти из ситуации? |
04.05.2014, 13:07 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
как вариант тест и приведение типов.
иной вариант через рефлексию. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
04.05.2014, 14:36 | #3 |
Новичок
Джуниор
Регистрация: 04.05.2014
Сообщений: 2
|
Если делать приведение типов то придется каждый элемент в коллекции сначала проверять относится ли он к определенному классу а только потом делать приведение типов. код будет большой, так как классов много.
|
04.05.2014, 16:22 | #4 |
Регистрация: 04.05.2014
Сообщений: 5
|
Покажите ваш код. Думаю все проще чем вы думаете.
|
04.05.2014, 16:30 | #5 |
Форумчанин
Регистрация: 18.01.2012
Сообщений: 975
|
Одинаковые поля вынести в интерфейс, а остальные - по приведению типов. Кода все равно будет много раз классов много.
P.S. сам бы сделал на основе паттерна Visitor. Если осилите, то и вам советую
Благодарить в репутацию. Проклинать — туда же
|
04.05.2014, 16:44 | #6 |
Регистрация: 04.05.2014
Сообщений: 5
|
Если классов не так много (до 10), то все можно проще сделать. Пройтись по всей коллекции с проверкой на то, какой тип на данной итерации, и через приведение типов работать с ним.
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ООП: доступ к полям наследника через предка | Khayzenberg | Общие вопросы Delphi | 23 | 05.04.2014 10:19 |
Через какую библиотеку можно получить доступ к COM объектам браузера | wanes101 | Win Api | 7 | 11.05.2013 10:11 |
Kак получить доступ к чужой веб-камере через интернет? | remont_it, | C++ Builder | 4 | 18.01.2013 15:55 |
Не получается получить значение из функции через указатель | Casper-SC | Общие вопросы C/C++ | 5 | 12.01.2012 06:32 |
Получить доступ к скринсейверу через реестр | Vask | Общие вопросы Delphi | 1 | 24.09.2008 21:12 |