powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создание класса в зависимости от...
16 сообщений из 16, страница 1 из 1
Создание класса в зависимости от...
    #39823964
Квази
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... записи в БД.
Как можно сделать такое?
Т.е. Если запись содержит "А", то вызвать new ClassA(), если B, то new ClassB(). Сейчас сделано через if(), но наверное есть более лаконичный способ?
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824059
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
Assembly.CreateInstance()

но лучше оставь if-ы
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824187
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Shocker.Pro
Код: c#
1.
Assembly.CreateInstance()


но лучше оставь if-ы
На крайний случай - switch
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824253
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квази,

Фабрика?
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824288
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
pationКвази,

Фабрика?
Мануфактура!
На входе сидит толстый офисный манагер и решает, какой класс сегодня клепать!

Не думаю, что у ТС есть несчетное множество классов и нужно придумывать, как их вызывать
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824334
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квази... записи в БД.
Как можно сделать такое?
Т.е. Если запись содержит "А", то вызвать new ClassA(), если B, то new ClassB(). Сейчас сделано через if(), но наверное есть более лаконичный способ?
Меня опять терзают смутные сомнения... а не пишет ли автор свой ORM?
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824389
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buser,
Ты первый догадался)
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824520
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвазиСейчас сделано через if()

Именно так. Прочитайте на естественном языке:

Если запись содержит "А"

будет

if(record["A"] != null) ... или switch, что является просто другой синтаксической формой if

Куда вы "лаконичнее" хотите? Заклинание алямбус-херамбус?
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824734
Квази
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserКвази... записи в БД.
Как можно сделать такое?
Т.е. Если запись содержит "А", то вызвать new ClassA(), если B, то new ClassB(). Сейчас сделано через if(), но наверное есть более лаконичный способ?
Меня опять терзают смутные сомнения... а не пишет ли автор свой ORM?
Не. Просто в приложении есть несколько классов, которые работают с разными наборами данных. Но несколько операций однотипные - к примеру считать данные из DataTable и т.д.
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824830
Mixon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Квазиbuserпропущено...

Меня опять терзают смутные сомнения... а не пишет ли автор свой ORM?
Не. Просто в приложении есть несколько классов, которые работают с разными наборами данных. Но несколько операций однотипные - к примеру считать данные из DataTable и т.д.

Ну так делают через наследование.
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39824855
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвазиНо несколько операций однотипные - к примеру считать данные из DataTable и т.д.
естественно всё прибито гвоздями
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39825164
Квази
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилКвазиНо несколько операций однотипные - к примеру считать данные из DataTable и т.д.
естественно всё прибито гвоздями
Намертво. Проект полуживой, но пока дышит.
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39825444
Hexag0v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Квази... записи в БД.
Как можно сделать такое?
Т.е. Если запись содержит "А", то вызвать new ClassA(), если B, то new ClassB(). Сейчас сделано через if(), но наверное есть более лаконичный способ?

Может про такое?

Код: c#
1.
2.
3.
4.
5.
var MyClasses = new Dictionary<string, Func<IMyClass>>
        {
            { "А",   () => new ClassA() },
            { "B",   () => new ClassB() }
        };



Код: c#
1.
2.
 if (MyClasses.TryGetValue("A", out var constructor))
                return constructor();
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39826735
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hexag0v,

Может про такое?
-----
Тогда лучше Dictionary<,> перегрузить.
До уровня когда - dic["a"]() - не будет вызывать ошибки при некорректном "а".
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39826737
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квази,

в приложении есть несколько классов, которые работают с разными наборами данных
-----
Базово - имплементируешь паттерн Фабрика.

Если наборы не пересекаются - раскидываешь по дллкам (не экономь) и погружаешь нужные в динамике. Фабрику - тоже в дллку и фабричный метод ее получения.
Но базово - Фабрика.
...
Рейтинг: 0 / 0
Создание класса в зависимости от...
    #39826782
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCat,

Autofac такое умеет из коробки. Не нужно городить огород.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Создание класса в зависимости от...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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