Регистрация события контроллера NinjectHttpApplication - PullRequest
2 голосов
/ 28 октября 2011

Я использую MVC NinjectHttpApplication.У меня есть ряд контроллеров, которые наследуются от базового класса (ControllerBase).Базовый класс выставляет событие.Я хочу зарегистрировать общий обработчик событий для каждого конкретного экземпляра контроллера, когда Ninject инициализирует контроллер.Что-то вроде:

var eventHandler = new EventHandlingObject();

foreach (var controller in kernel.GetAll<ControllerBase>())
{
   controller.SomeEvent += eventHandler.HandlingMethod;
}

Есть ли какие-либо перехватчики в StandardKernel, которые позволят мне перехватывать создание экземпляра контроллера и связывать событие?Если нет, есть ли способ восстановить все контроллеры, которые были зарегистрированы в вызове, на

kernel.Load(Assembly.GetExecutingAssembly());

, чтобы я мог их перебирать и регистрировать событие на каждом?

1 Ответ

1 голос
/ 29 октября 2011

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

Что вы можете сделать, это добавить действие активации (OnActivation(....)). Но что, вероятно, еще проще, это инвертировать управление и перейти от события к внедрению объекта обработки события в ваши контроллеры и вызвать для них метод обработки события.

...