我正在使用Simple Injector for IoC和Rebus(服务总线)来调度保存在多个队列中的事件(主题)。 Rebus需要为每个队列配置一个新的 SimpleInjectorContainerAdapter 。
var bus = Configure.With(new SimpleInjectorContainerAdapter(container))
在此配置阶段,无法将简单注入器容器的同一实例传递给容器适配器的相同实例(容器会出现多次注册IBus的错误)。
我也使用SignalR作为向客户发送事件的事件处理程序之一
在this SignalR configuration tutorial 之后,我设置了多个中心和相对事件通知程序(应用程序中每个bounded context一个)。
使用经典的单例模式,如教程示例所示,很容易将相同的通知程序实例传递给容器的各种实例:
container.RegisterSingleton(Finishing.Notification.Notifier.Instance);
现在我想将实例创建委托给Simple Injector容器(只有一个),所以我开始关注this tutorial:
container.RegisterSingleton<Finishing.Notification.Notifier>();
container.Register(() => GlobalHost.ConnectionManager.GetHubContext<Finishing.Notification.NotificationHub>().Clients);
问题在于,通过这种方式,我将为每个容器实例提供一个通知器实例(非常令人遗憾)。
我知道我可以解决这个using a master container as Abstract Factory,但我正在寻找更具体的解决方案 感谢。
答案 0 :(得分:0)
现在我想将实例创建委托给Simple Injector容器
(...)
问题是这样我每个容器实例都会有一个通知器实例。
所以你希望每个容器都能创建单例实例,但是每个容器都有一个单例的实例是一个问题......这不是一个矛盾吗?