正在向Simple Injector注册相同类型的实例
本文关键字:同类型 实例 注册 Injector Simple | 更新日期: 2023-09-27 18:24:48
我刚刚拿起了Simple Injector,目前我想做的就是:
Container.Register<IMessageHandler>(() => new MessageHandlerOne());
Container.Register<IMessageHandler>(() => new MessageHandlerTwo());
我只是想注册两个消息处理程序,以便稍后可以对它们进行迭代。
为了取回这些注册的实例,这个方法听起来像是完成了任务。
var instances = Container.GetAllInstances<IMessageHandler>();
//why doesn't instances contain both MessageHandlerOne, and MessageHandlerTwo ?
相反,这会返回一个空的IEnumerable
。
我做错了什么?对于名为Simple Injector的东西,你会认为这会起作用吗?我是不是想错了?
由于Simple Injector API明确区分了集合的注册,因此您尝试执行的操作应该在对Container.Register<IMessageHandler>
的第二次调用时失败,并出现异常。
换句话说,如果你想解析一个集合,你应该注册一个集合:
Container.Collection.Register<IMessageHandler>(
typeof(MessageHandlerOne),
typeof(MessageHandlerTwo));