powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пустой базовый абстрактный класс
10 сообщений из 10, страница 1 из 1
Пустой базовый абстрактный класс
    #39013357
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гуд? Бэд?

А то на всяких StackOverflow пишут, что для С++ это бэд, т. к. там какие-то свои заморочки и пустые классы ничего не дают (или это про интерфейсы? - не понял, короче).

Т. е. вообще пустой

Код: c#
1.
2.
3.
public abstract class BaseClass
{
}



Мне надо метод, который бы возвращал потомки этого класса. Но не хочу перегружать метод с однотипной логикой. В самом методе, конечно, будет что-то типа свича по выбору конкретного потомка для возврата. Клиент тоже будет знать, какой тип ему на самом деле пришёл (на крайний случай GetType() поможет).
...
Рейтинг: 0 / 0
Пустой базовый абстрактный класс
    #39013364
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что мешает в таком случаи использовать класс object?
вы создаете пустой класс, который наследует object, то есть, по сути от object он кроме как иминенем ни чем не отличается и полностью его наследует.
Только если как ограничение использовать.
...
Рейтинг: 0 / 0
Пустой базовый абстрактный класс
    #39013370
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще как вариант - использовать пустой маркерный интерфейс:
Код: c#
1.
public interface IMySomeEntity {}


По сути практически то же самое. Смысл использования - создание своей иерархии, generic constraints.
...
Рейтинг: 0 / 0
Пустой базовый абстрактный класс
    #39013407
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловныеще как вариант - использовать пустой маркерный интерфейс:
Код: c#
1.
public interface IMySomeEntity {}


По сути практически то же самое. Смысл использования - создание своей иерархии, generic constraints.
В классе точно не будет логики. Всё равно интерфейс? - У меня это будет типа DTO.

Roman Mejtesчто мешает в таком случаи использовать класс object?
вы создаете пустой класс, который наследует object, то есть, по сути от object он кроме как иминенем ни чем не отличается и полностью его наследует.
Только если как ограничение использовать.
В принципе, можно. Но если я захочу таки наполнить данными этот базовый класс в будущем - лучше создать свой пустой сразу?
...
Рейтинг: 0 / 0
Пустой базовый абстрактный класс
    #39013423
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112В принципе, можно. Но если я захочу таки наполнить данными этот базовый класс в будущем - лучше создать свой пустой сразу?
Ну, потом вводить базовые классы это редкостный геморой и говорит о том, что нужно заранее о таких вещах думать.
особенно, когда наколбасил уже 100500 строк кода.
не думаю, что этот пустой базовый класс как то скажется на производительности или чем то еще. Зато будет удобно работать с Generic классами. Такие вещи даже в WPF встречаются, просто пустые абстрактные классы наследующие базовые классы Visual или DO и т.д.
на вскидку название не дам, но когда копаешься в этом говне и не такое можно встретить :)
...
Рейтинг: 0 / 0
Пустой базовый абстрактный класс
    #39013433
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey2112В классе точно не будет логики. Всё равно интерфейс? - У меня это будет типа DTO.
У интерфейсов перед классами отличие в возможности их комбинирования (множественная реализация интерфейсов). Плюс интерфейс может реализовывать структура. Если вам эти моменты неважны, то разницы между пустым интерфейсом и пустым классом никакой. Можно подкинуть пятак, чтобы определиться.
...
Рейтинг: 0 / 0
Пустой базовый абстрактный класс
    #39013512
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
...
Рейтинг: 0 / 0
Пустой базовый абстрактный класс
    #39015016
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот и придумалось, зачем заюзать свой базовый класс. Хочу при возврате потомков иметь признак, что есть что возвращать.

Например, возвращаю результаты разного кастомного типа. Но нужен признак, что новых результатов нет и возвращать нечего. При этом в методе только один тип возврата - базовый тип результата. Всякие

out bool isNewResultExist

в параметрах метода использовать не хочу. Есть вариант приделать подобное поле isNewResultExist в базовый класс. Тогда клиент получает результат, в первую очередь читает это поле и, если оно тру, то приводит базовый результат к конкретному потомку и далее с ним работает.


Или всё же лучше аналог паттерна "try parse" (что-то типа TryGet Results)?
...
Рейтинг: 0 / 0
Пустой базовый абстрактный класс
    #39015017
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть ещё вариант возвращать null. Но:

1) как это будет работать с WCF и прочими местами, где есть сериализация?

2) придётся на клиенте заюзать проверку на null, что неинформативно - почему результат == null? потому, что новых результатов нет, или что-то случилось в расчёте, в канале связи и прочее, что результаты потерялись?
...
Рейтинг: 0 / 0
Пустой базовый абстрактный класс
    #39015019
Alexey2112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Минус паттерна "try get" вижу в том, что к нему почти наверняка нужен ещё и просто метод Get - т. е. надо городить два метода, и ещё объяснять, зачем нужен один и второй. Логика с булевым полем в базовом классе как-то проще и понятнее мне видится.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пустой базовый абстрактный класс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]