Использование RegisterInitializer для подключения обработчиков событий
У меня есть служба WCF, которая использует простой инжектор для внедрения зависимостей. Я хочу подключить некоторые обработчики событий в загрузчик контейнера. Я создал интерфейсIStatusChangeNotification
:
public interface IStatusChangeNotification
{
event EventHandler<int> JobStatusChange;
}
мойCommandHandler
инвентарьIStatusChangeNotification
и есть два класса обработчиков событийEmailNotification
а такжеMmrNotification
каждый из которых определяетNotify()
метод. Тогда в моем коде начальной загрузки у меня есть следующее:
container.Register<EmailNotification>();
container.Register<MmrNotification>();
container.RegisterManyForOpenGeneric(typeof(ICommandHandler<>),
Assembly.GetExecutingAssembly());
container.RegisterInitializer<IStatusChangeNotification>(scn =>
{
scn.JobStatusChange += container.GetInstance<EmailNotification>().Notify;
scn.JobStatusChange += container.GetInstance<MmrNotification>().Notify;
});
Это работает, и уведомления получены. Мой вопрос заключается в том, является ли это правильным / лучшим подходом для подключения обработчиков событий? Как мне удалить обработчики в конце запроса, и не удастся ли их удалить, приведет к утечке памяти?