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

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


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

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

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

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

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

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

будет

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

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

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

Ну так делают через наследование.
...
Рейтинг: 0 / 0
10.06.2019, 11:27
    #39824855
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание класса в зависимости от...
КвазиНо несколько операций однотипные - к примеру считать данные из DataTable и т.д.
естественно всё прибито гвоздями
...
Рейтинг: 0 / 0
11.06.2019, 06:02
    #39825164
Квази
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание класса в зависимости от...
ИзопропилКвазиНо несколько операций однотипные - к примеру считать данные из DataTable и т.д.
естественно всё прибито гвоздями
Намертво. Проект полуживой, но пока дышит.
...
Рейтинг: 0 / 0
11.06.2019, 15:28
    #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
14.06.2019, 18:47
    #39826735
PinkCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание класса в зависимости от...
Hexag0v,

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

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

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

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


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