Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Создание класса в зависимости от...  [new]
Квази
Member

Откуда:
Сообщений: 447
... записи в БД.
Как можно сделать такое?
Т.е. Если запись содержит "А", то вызвать new ClassA(), если B, то new ClassB(). Сейчас сделано через if(), но наверное есть более лаконичный способ?
7 июн 19, 12:17    [21904393]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20320
Assembly.CreateInstance()
но лучше оставь if-ы
7 июн 19, 14:26    [21904553]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145588
Shocker.Pro
Assembly.CreateInstance()

но лучше оставь if-ы

На крайний случай - switch
7 июн 19, 17:09    [21904749]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
pation
Member

Откуда: Москва
Сообщений: 4448
Квази,

Фабрика?
7 июн 19, 18:20    [21904840]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
Cat2
Member

Откуда: Petroskoi, Karjala
Сообщений: 145588
pation
Квази,

Фабрика?

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

Не думаю, что у ТС есть несчетное множество классов и нужно придумывать, как их вызывать
7 июн 19, 19:03    [21904892]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4390
Квази
... записи в БД.
Как можно сделать такое?
Т.е. Если запись содержит "А", то вызвать new ClassA(), если B, то new ClassB(). Сейчас сделано через if(), но наверное есть более лаконичный способ?

Меня опять терзают смутные сомнения... а не пишет ли автор свой ORM?
7 июн 19, 22:54    [21904968]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 227
buser,
Ты первый догадался)
8 июн 19, 10:27    [21905077]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
hVostt
Member

Откуда:
Сообщений: 15389
Квази
Сейчас сделано через if()


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

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

будет

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

Куда вы "лаконичнее" хотите? Заклинание алямбус-херамбус?
8 июн 19, 23:16    [21905270]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
Квази
Member

Откуда:
Сообщений: 447
buser
Квази
... записи в БД.
Как можно сделать такое?
Т.е. Если запись содержит "А", то вызвать new ClassA(), если B, то new ClassB(). Сейчас сделано через if(), но наверное есть более лаконичный способ?

Меня опять терзают смутные сомнения... а не пишет ли автор свой ORM?

Не. Просто в приложении есть несколько классов, которые работают с разными наборами данных. Но несколько операций однотипные - к примеру считать данные из DataTable и т.д.
10 июн 19, 06:18    [21905617]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
Mixon
Member

Откуда:
Сообщений: 311
Квази
buser
пропущено...

Меня опять терзают смутные сомнения... а не пишет ли автор свой ORM?

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


Ну так делают через наследование.
10 июн 19, 10:44    [21905748]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
Изопропил
Member

Откуда:
Сообщений: 31113
Квази
Но несколько операций однотипные - к примеру считать данные из DataTable и т.д.

естественно всё прибито гвоздями
10 июн 19, 11:27    [21905786]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
Квази
Member

Откуда:
Сообщений: 447
Изопропил
Квази
Но несколько операций однотипные - к примеру считать данные из DataTable и т.д.

естественно всё прибито гвоздями

Намертво. Проект полуживой, но пока дышит.
11 июн 19, 06:02    [21906304]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
Hexag0v
Member

Откуда:
Сообщений: 13
Квази
... записи в БД.
Как можно сделать такое?
Т.е. Если запись содержит "А", то вызвать new ClassA(), если B, то new ClassB(). Сейчас сделано через if(), но наверное есть более лаконичный способ?


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

var MyClasses = new Dictionary<string, Func<IMyClass>>
        {
            { "А",   () => new ClassA() },
            { "B",   () => new ClassB() }
        };


 if (MyClasses.TryGetValue("A", out var constructor))
                return constructor();
11 июн 19, 15:28    [21906802]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
PinkCat
Member

Откуда:
Сообщений: 2463
Hexag0v,

Может про такое?
-----
Тогда лучше Dictionary<,> перегрузить.
До уровня когда - dic["a"]() - не будет вызывать ошибки при некорректном "а".
14 июн 19, 18:47    [21908953]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
PinkCat
Member

Откуда:
Сообщений: 2463
Квази,

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

Если наборы не пересекаются - раскидываешь по дллкам (не экономь) и погружаешь нужные в динамике. Фабрику - тоже в дллку и фабричный метод ее получения.
Но базово - Фабрика.
14 июн 19, 18:52    [21908955]     Ответить | Цитировать Сообщить модератору
 Re: Создание класса в зависимости от...  [new]
hVostt
Member

Откуда:
Сообщений: 15389
PinkCat,

Autofac такое умеет из коробки. Не нужно городить огород.
14 июн 19, 22:47    [21909014]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить