SimpleInjector :使用 InstanceCreator 注册集合

SimpleInjector : Register collection with InstanceCreator

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

基本上我想做的是:

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

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

TIA

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

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

container.Collection.Append<ILogWriter>(instanceCreator, lifestyle);