正在向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注册相同类型的实例

由于Simple Injector API明确区分了集合的注册,因此您尝试执行的操作应该在对Container.Register<IMessageHandler>的第二次调用时失败,并出现异常。

换句话说,如果你想解析一个集合,你应该注册一个集合:

Container.Collection.Register<IMessageHandler>(
    typeof(MessageHandlerOne), 
    typeof(MessageHandlerTwo));