Учитывая малое / известное количество операций, которые будут выполняться над вашими данными, я бы решил вручную кодировать эти операции на основе данных, полученных из базы данных.Для расширяемости / ремонтопригодности лучше создать для этого надлежащий дизайн, а не использовать простой оператор switch.Я предполагаю, что шаблон стратегии подойдет вашим потребностям.
Как уже говорили другие, вы могли бы использовать отражение , чтобы вызывать методы какуказано в базе данных.Проблема этого подхода заключается в том, что данные в вашей базе данных тесно связаны с сигнатурами методов.Это менее приемлемо, чем первый подход, но допускает большую расширяемость с минимальными корректировками кода.Еще одним недостатком является то, что MethodInfo.Invoke()
довольно медленный.
Если вы выбрали бы рефлексию, но нашли, что подход Invoke()
слишком медленный, я могу порекомендовать эту статью Джона Скита который объясняет, как преобразовать MethodInfo в экземпляр делегата.Это дает значительный прирост скорости.Недавно я написал обобщенную реализацию, использующую деревья выражений .
В общем, кажется, что вариант 1 по-прежнему лучше всего подходит для ваших целей.