Так что в моем текущем коде я работаю над каким-то менеджером уведомлений.
Идея состоит в том, что мой основной BL будет использовать этот менеджер уведомлений для каждого вызова метода.Следовательно, вероятно, будет только один менеджер уведомлений (синглтон в единстве, я думаю).
Когда вы используете диспетчер уведомлений, вы можете отправить уведомление через SMS \ Email \ Other.на самом деле происходит то, что диспетчер уведомлений разрешает «INotificationProvidor», который также находится в контейнере единицы.Это решение делается по имени, как в «SMS», «Email», «Other».
Вот небольшой фрагмент кода:
var notificationProvidor =
m_Container.Resolve<INotificationProvidor<TResult>>(
typeOfNotification.ToString());
ResultMessage<TResult> notificationResult = notificationProvidor
.SendNotification(source, destination, message, subject);
Как вы можете видеть, менеджер уведомлений удерживаетэкземпляр контейнера для разрешения каждого из «INotificationProvidor».
Как можно устранить эту необходимость удержания контейнера в диспетчере уведомлений?со следующими ограничениями:
- Не все типы «INotificationProvidor» (SMS, электронная почта, другие) могут быть зарегистрированы в контейнере.
- Будет только один менеджер уведомлений,(поскольку BL, использующий его, будет активен в течение приложения и получит его от DI)
Короче ... разрешение зависимости для вызова метода.:)