|
4 / 4 / 0
Регистрация: 14.10.2017
Сообщений: 85
|
|
Как заполнить List<MyClass> случайным количеством классов наследников?29.05.2018, 13:27. Показов 4764. Ответов 9
Метки нет (Все метки)
Добрый день. Что-то никак не могу сделать следующее: Есть абстрактный класс Room и классы наследники Kitchen, Bedroom, Hall, Restroom, Storeroom. Как заполнить List<Room> случайным количеством классов наследников?
0
|
|
| 29.05.2018, 13:27 | |
|
Ответы с готовыми решениями:
9
Создать и заполнить одномерный массив случайным количеством случайных элементов |
|
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
|
||||||
| 29.05.2018, 13:38 | ||||||
1
|
||||||
|
4 / 4 / 0
Регистрация: 14.10.2017
Сообщений: 85
|
|
| 29.05.2018, 14:18 [ТС] | |
|
Спасибо, примерно тоже самое сделал у себя, но я скорее не раскрыл вопрос, есть ли способ не использовать явное добавление наследников. Тоесть не проходить через switch case, а сделать это динамически, что бы как только создавался новый наследник базвого класса он был бы в пуле на добавление. К примеру у меня вариантов комнат будет 100, и они будут постоянно добавляться, как тогда, не менять же свитч кейс добаляя case 101+? На ум приходит сделть свойство с типом энума в классе ROOM в котором будет указанно имя наследника, ну и соответсвтенно сделать список из энумов и перебирать по классу наследнику через рефлексию, и создавать новый экземпляр, но это как то костыльно и избыточно, и опять же нужно добавлять в енум название класса, что практичекси сводит к тому же способу как и у вас, только более заковыристо реализованному.
0
|
|
|
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
|
|||||||
| 29.05.2018, 16:53 | |||||||
1
|
|||||||
|
4 / 4 / 0
Регистрация: 14.10.2017
Сообщений: 85
|
|
| 29.05.2018, 17:19 [ТС] | |
|
Огромное спасибо, но опять немного не то, в первом случае явно указываем через Switch case, что добавляем в список экземпляр класса.(Соответственно мы для каждого класса наследника должны добавить свою case конструкцию.) Во втором мы при создании вручную экземпляра класса, тип которого явно нами указанн, сразу подписываем его на событие добавления в список.
Оба примера шикарны, и в первом случае действительно создается случайный экземпляр из возможных наследников, но как обойти конструкцию switch case ? Тоесть можно ли как то получить список всех возможных классов наследников от базового класса и создать случайное количество екземпляров случайно выбранных наследников?
0
|
|
|
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
|
||||||
| 29.05.2018, 17:58 | ||||||
Сообщение было отмечено Alone11 как решение
Решение
Alone11,
1
|
||||||
|
4 / 4 / 0
Регистрация: 14.10.2017
Сообщений: 85
|
|
| 29.05.2018, 18:08 [ТС] | |
|
Даценд, Спасибо!
0
|
|
|
4 / 4 / 0
Регистрация: 14.10.2017
Сообщений: 85
|
||||||
| 20.06.2018, 19:37 [ТС] | ||||||
|
Даценд, Хотел бы немного апнуть тему, подскажите, а как быть если у класса наследника конструктор без параметров отсутствует?
К примеру перепишем код класса Hall : Room
0
|
||||||
|
29 / 31 / 27
Регистрация: 15.11.2017
Сообщений: 121
|
|
| 20.06.2018, 19:41 | |
|
0
|
|
|
4 / 4 / 0
Регистрация: 14.10.2017
Сообщений: 85
|
||||||||||||||||
| 21.06.2018, 16:38 [ТС] | ||||||||||||||||
|
VIAZNIKOVGM,
Это конечно хорошо, но вот спецкласс должен создаваться только на основании определенного параметра, соответственно я не могу сделать просто конструктор без параметров. В тоже самое время, мне нужно получить список заполненый екземплярами классов наследников базового класса, в который попадает и класс который создается только с праметрами. Как быть? Добавлено через 7 часов 50 минут Update: Кое в чем разобрался, достаточно указать значение параметра после запятой и все норм, но так как мы не знаем какой класс сгенерируется в списке, и будет ли он содержать конструктор по умолчанию, пытаюсь задействовать рефлексию, получив тип елемента из списка классов наследников и, сравнив его с нужным, выполнить его инициализацию с параметром, но не получается узнать тип элемента массива. (В принципе, можно и капнуть до параметра конструктора требуемого типа и узнать если он SomeEnum то выполнить инициализацию с параметром, но опять таже проблема, не GetElementType() не дает тип элемента.) Прошу помощи.
Update: разобрался. строку
0
|
||||||||||||||||
| 21.06.2018, 16:38 | |
|
Помогаю со студенческими работами здесь
10
Как отобразить List<MyClass> в Asp.Net
Универсальное преобразование List<object> -> List<MyClass> Как использовать наследников от стандартных классов? Например, CMyEdit? Преобразование List<MyClass> to List<Object> Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|