Pull to refresh

Comments 9

Гуру поправят, но имхо если звать

Assembly.GetAssembly(tFind).GetTypes().FirstOrDefault(t => t.IsSubclassOf(tFind) && t.Name== "parcer" + postfix);

или

Type tR = Assembly.GetAssembly(tFind).GetTypes().FirstOrDefault(t => t.IsSubclassOf(tFind) && (t.GetCustomAttribute(typeof(IDAttribute)) as IDAttribute).id == id);

на каждый чих - в с случае миллиардов записей получится очень долго... как минимум хочется закешировать нужные типы по ид в Dictionary или Хештаблице

Само собой, если требуется высокая производительность, то первый способ будет быстрее и без создания дополнительных сложностей с кэшированием

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

Добавил в статью проверку производительности и хеширование в словаре, спасибо

Зачем наследовать от одного базового класса? Тут же банальная абстрактная фабрика.

Какое-то очень геморройное решение. Я бы сделал обработку через Стратегию, ну либо Абстрактная фабрика. Либо можно реализовать воркфлоу со скриптами, чтобы не перекомпилировать каждый раз.

Похоже, вы на пути изобретения паттерна Фабрика, но путь еще до конца не пройден.

Неплохая идея. Прикрутить к linq2db. Полиморфные связи. В базе хранятся два поля Type и ID

Спасибо за объяснение, зачем нужно знать паттерны

Очень больно пытаться понять то что вы написали... Используйте фабрику и стратегию.... И имена классов пишите с заглавной буквы.

Sign up to leave a comment.

Articles