33 / 26 / 19
Регистрация: 21.07.2015
Сообщений: 300
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
Интерфейс и обобщения23.08.2018, 12:23. Показов 1672. Ответов 3
Метки нет (Все метки)
Коллеги, добрый день.
Решил для себя добить эту тему до более-менее устойчивого понимания. Не легко идет, прошу помочь. Ниже код тестового приложения, посмотрите плиз кому не лень? Так это все делается, или нужно иначе? Интерфейс с единственным методом (сбор репозитория)
0
|
23.08.2018, 12:23 | |
Ответы с готовыми решениями:
3
Обобщения Обобщения Обобщения Обобщения |
23.08.2018, 16:35 | 2 |
У вас репозиторий сам себя "собирает"?
Если DerivedClass1 и DerivedClass2 - доменные типы, то они вообще не должны ничего знать о репозиториях. Похоже на какую-то извращенную реализацию Active Record паттерна... И с генериками вы что-то перемутили.
0
|
33 / 26 / 19
Регистрация: 21.07.2015
Сообщений: 300
|
|
23.08.2018, 20:33 [ТС] | 3 |
Cupko, смысл всего этого - спроектировать данные так, чтобы можно было масштабировать приложение без лишнего повторения кода. Чтобы можно было обращаться к GetRepo() любого класса, производного от BaseClass. Как это должно делаться правильно - не знаю. В соседнем топике подсказали вынести в универсальный (обобщенный) интерфейс. Ну вот.. и тыкался весь день и так и сяк
Можно как раньше налепить практически одинаковые методы в каждом из классов и не париться, как до этого делал)) Но после прочтения книжки по проектированию рука не поднимается такое сделать Это не специально, не знаю о таком
0
|
.NET senior
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
||||||||||||||||
24.08.2018, 07:43 | 4 | |||||||||||||||
Сообщение было отмечено SPNick как решение
Решение
SPNick, Вам же уже объясняли это в предыдущей теме.
BaseClass, DerivedClassA, DerivedClassB - Ваши сущности модели данных, они понятия не должны иметь о том, каким образом и откуда извлекаются данные для заполнения их свойств, и уж точно не должны иметь методов вида GetRepo. Для корректной реализации желаемого поведения Вам достаточно использовать какой-нибудь Entity Framework или любую другую ORM, которая Вам больше всего нравится / которую Вы лучше знаете. То есть, в этом случае классы модели данных должны иметь примерно такой вид:
Пример использования:
1
|
24.08.2018, 07:43 | |
24.08.2018, 07:43 | |
Помогаю со студенческими работами здесь
4
Обобщения коллекций Обобщения - can't convert from T to T Обобщения в интерфейсах Вопрос по обобщения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|