SimpleInjector:向InstanceCreator注册集合

问题描述 投票:1回答:1

我正在尝试将一个集合及其instanceCreator一起注册。我无法为接受instanceCreator的Container.Collection.Register方法找到任何重载。如果我尝试运行循环并使用Container.Register(instanceCreator, lifestyle)多次注册一个类型及其instanceCreator,则无法执行此操作,因为我收到无法多次注册该类型的错误。

基本上我想做的是:

foreach(var item in items){
 Container.Register<ILogWriter>(instanceCreator, lifestyle)
}

我有ILogWriter的多个实现,每个实现都有各自不同的配置,需要在构造函数中传递它们,因此我需要使用instanceCreator重载。

TIA

c# .net dependency-injection ioc-container simple-injector
1个回答
0
投票

Container.Collection.Register用于立即注册整个集合。例如,通过使用批注册并提供Assembly实例列表或Type实例列表。

另一方面,您正在寻找的是为实例集合注册一个项目。这是使用Container.Collection.Append重载完成的:

container.Collection.Append<ILogWriter>(instanceCreator, lifestyle);
© www.soinside.com 2019 - 2024. All rights reserved.