Я использую простой инжектор для IoC и Rebus, служебную шину, чтобы отправлять события, сохраненные в нескольких очередях (теме). Ребус должен быть настроен с новым SimpleInjectorContainerAdapter для каждой очереди.Как разделить Singleton Single SignalR между несколькими экземплярами Simple Injector
var bus = Configure.With(new SimpleInjectorContainerAdapter(container))
В этой фазе конфигурации не представляется возможным передать тот же экземпляр простого инжектора контейнера ни одного экземпляра контейнера адаптера (контейнер поднимается ошибка многократной регистрации IBUS).
Я также использую SignalR как один из обработчиков событий для отправки событий клиентам.
После this SignalR configuration tutorial Я установил несколько концентраторов и относительных уведомлений о событиях (по одному для каждого bounded context в приложении).
Используя классическую одноплодной шаблон, как показано в учебнике, например, легко пройти один и тот же экземпляр уведомителя различных экземпляров контейнеров:
container.RegisterSingleton(Finishing.Notification.Notifier.Instance);
Теперь я хотел бы делегировать создание экземпляра к простой Инжектор контейнер (только один), так что я начал следовать this tutorial:
container.RegisterSingleton<Finishing.Notification.Notifier>();
container.Register(() => GlobalHost.ConnectionManager.GetHubContext<Finishing.Notification.NotificationHub>().Clients);
вопрос заключается в том, что, таким образом, у меня будет п экземпляр уведомителя один для каждого экземпляра контейнера (глубоко прискорбный).
Я знаю, что могу решить эту проблему using a master container as Abstract Factory, но я ищу более конкретное решение.
Спасибо.
Вы решили [переопределить существующие регистрации] (http://simpleinjector.readthedocs.io/en/latest/howto.html#override-existing-registrations), чтобы устранить первоначальную ошибку * множественную регистрацию IBus *? – qujck
Могу ли я спросить, почему именно вы хотели бы избежать шаблона локатора обслуживания? Казалось бы, это будет хорошо подходить для вашего требования. – ravi
@ravi Я бы хотел, чтобы избежать локатора обслуживания, потому что я знаю, что это [анти-шаблон] (http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/) – ilcorvo