Активировать функцию, указав имя функции - PullRequest
0 голосов
/ 26 декабря 2011

Я создаю веб-сайт, который будет отправлять уведомления по электронной почте, когда определенные действия будут завершены. На данный момент у меня есть общая функция уведомления, которая вызывается в определенных областях с параметрами для ссылки на запись базы данных, содержащую сообщение и т. Д.

Я хотел бы знать, есть ли какой-нибудь способ сделать триггер, подобный этому динамическому, поэтому добавление / удаление триггеров в разных областях сайта не требует изменений в коде. Я думал о чем-то с помощью отражения и пространства имен / функции для вызова триггера из загруженной из базы данных, но я бы подумал, что это окажет значительное влияние на производительность.

1 Ответ

1 голос
/ 26 декабря 2011

Отражение на самом деле не оказывает такого большого влияния на производительность, особенно когда вы учитываете кэширование указателей на функции после первого поиска.

Это простой всплеск, может не скомпилироваться или работать, но вы должны быть на правильном пути:

var type = Type.GetType("System.DateTime");
var parser = type.GetMethod("Parse");
Console.WriteLine(parser.Invoke(null, "2012-01-01 12:00"));

Parser является объектом MethodInfo и может быть кэширован для последующего использования.Вызов invoke не хуже по производительности, чем прямой вызов DateTime.Parse.Если бы мне пришлось угадывать, самый медленный вызов - это Type.GetType, даже тогда, когда мы не говорим много времени, определенно в масштабе мс.

Если вы тоже можете дать немного больше информации,Возможно, кто-то может даже указать вам лучшее направление.Возможно, важна небольшая информация о DI или IoC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...