Kyl*_*bel 4 c# dependency-injection ioc-container simple-injector
我刚拿起Simple Injector,我目前想做的就是:
Container.Register<IMessageHandler>(() => new MessageHandlerOne());
Container.Register<IMessageHandler>(() => new MessageHandlerTwo());
Run Code Online (Sandbox Code Playgroud)
我只是想注册两个消息处理程序,所以我可以稍后迭代它们.
要恢复这些注册的实例,这种方法听起来就像它可以做到的那样.
var instances = Container.GetAllInstances<IMessageHandler>();
//why doesn't instances contain both MessageHandlerOne, and MessageHandlerTwo ?
Run Code Online (Sandbox Code Playgroud)
相反,这会返回一个空的IEnumerable.
我究竟做错了什么?对于名为Simple Injector的东西,您会认为这会起作用吗?我是否以错误的方式思考这个问题?
您尝试做的事情应该在第二次调用时失败,Container.Register<IMessageHandler>因为Simple Injector API 明确区分了集合的注册.
换句话说,如果要解析集合,则应注册集合:
Container.Collection.Register<IMessageHandler>(
typeof(MessageHandlerOne),
typeof(MessageHandlerTwo));
Run Code Online (Sandbox Code Playgroud)