Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
16 / 16 / 8
Регистрация: 14.01.2013
Сообщений: 545
Записей в блоге: 2

Нужно вернуть определенный тип одной функцией

21.12.2016, 14:45. Показов 2918. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я к вам с интересным на мой взгляд вопросом.

Итак внимание! - У меня есть 4 класса.

Abs - Абстрактный класс.

A - Наследует абстрактный класс Abs и реализует функции A : Abs
B - Наследует абстрактный класс Abs и реализует функции B : Abs
Config - Класс конфигурации который содержит одну функцию GetRepository()


Есть вот такая конструкция.

C#
1
Abs _rep = new Config().GetRepository();
Класс Config

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool clobal = true;
 
Config 
{
    clobal = false;
}
 
public ? GetRepository()
{
   if(clobal)
     return new A();
   else
     return new B();
}
Вопрос: Возможно вернуть через функцию GetRepository() в зависимости от значения условия нужный мне тип? A или B. Как мне такое реализовать не изменяя остальные классы кроме класса Config.

Добавлено через 11 минут
Все разобрался нужно указать функции вместо типа dynamic

C#
1
2
3
4
5
6
7
public dynamic GetRepository()
{
   if(clobal)
     return new A();
   else
     return new B();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2016, 14:45
Ответы с готовыми решениями:

Нужно собрать компьютер под определенный тип задач
Нужен для большого количества одновременно работающих программ. К примеру: Три браузера с кучей вкладок в каждом, виртуал бокс тут...

Вернуть List, в котором нужно только 2 поля: ID, Name - какой тип возвращаемого значения указать
Хотел узнать мнение по поводу модели данных. Чтобы отделить данные от самого приложения нужно создавать отдельный класс и лишь возвращать...

Какой функцией можно преобразовать тип byte в тип string и наоборот?
Вот моя проблема, у меня конченое действие будет выводить число в 10 С.С и в типе byte, а мне надо ее еще перевести в 2 С.С , но при...

22
309 / 309 / 215
Регистрация: 24.09.2013
Сообщений: 771
22.12.2016, 17:28
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от gvt Посмотреть сообщение
Вы не можете ничего гарантировать. Требования меняются, появляются новые реализации. Ваш код падает от простейшего добавления нового класса
Я не вижу требований от автора темы (в том числе о расширяемости и легком сопровождении кода)
Хронология: я предлагаю автору использовать object, вы говорите что так нельзя, я говорю можно, вы говорите написать код, я пишу код ровно такой какой просили. Что от меня еще надо? Выкладывать план-проект, периодически отчитываться о ходе выполненного задания? Это форум, тут задают вопросы и получают ответы или советы. С таким же успехом можно заходить практически в любую тему и критиковать лучший ответ, скажем, за отсутствие перехвата исключений, проверки на правильность ввода, плохую структуру проекта...
Цитата Сообщение от gvt Посмотреть сообщение
Действительно. Формально, решением можно назвать что угодно если оно решает задачу. Но решения бывают качественные и нет
Ровно что просили
Цитата Сообщение от gvt Посмотреть сообщение
Мне просто, если честно, интересно. Назовите преимущества вашего подхода по сравнению с тем, как вообще такие задачи решаются методами ООП в C#
О перимуществах своего подхода я не говорил ничего, просто доказал его право на существование. Вообще я думаю что изначальная задумка уже кривая (возвращать из метода объект неопределенного типа - не гуд, особенно, когда в этом нет нужды), но если автор хочет это сделать, то я предложил вариант.
Цитата Сообщение от aquaMakc Посмотреть сообщение
Коллеги, а вам не кажется, что в данном случае вместо абстрактного класса с одной функцией было бы логичней использовать интерфейс?
Согласен
0
22 / 20 / 3
Регистрация: 12.10.2016
Сообщений: 62
22.12.2016, 17:58
Pikemaster, я просто не считаю, что стоит давать советы когда сами плохо разбираетесь в теме. Люди подумают, что это хороший способ и выстрелят себе в ногу или получат по шее от старших товарищей, закоммитив такое
0
309 / 309 / 215
Регистрация: 24.09.2013
Сообщений: 771
22.12.2016, 19:33
Цитата Сообщение от gvt Посмотреть сообщение
я просто не считаю
gvt, да не считайте, флаг в руки
Правила форума не запрещают давать советы - этого мне достаточно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.12.2016, 19:33

Как определить тип переменной, ссылающейся на определённый класс? Нужен именно тип, а не ссылка на обьект!
interface HowDefineMyType { void info(); } class A implements HowDefineMyType { public int x;

Определенный интеграл с тригонометрической функцией
Помогите вычислить. Онлайн сервисы говорят, что он берется и равен pi/2 \int_{0}^{2\pi } \frac{1}{5-3cos(x)}dx

Вернуть ошибку функцией int
Здравствуйте. Нужно вернуть ошибку или объяснение ошибки,код ниже. Пытался сделать с помощью структуры но не очень понял как. ...

Затруднения с делегатом-функцией -> не получается вернуть значение функции
Приветствую, уважаемые) Подскажите пожалуйста: Friend Delegate Function message11() As String Public Class Form1 ...

Что вернуть по ссылке, если объект функцией поиска не найден?
Здравствуйте всем! Имеется проблема: приведенная ниже функция ищет элемент (объект класса TreeNode) в бинарном дереве (объект класса...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru