如何使用简单的注入器在运行时将值传递给实例集合的构造函数?

How can i pass a value to constructors of collection of instances at runtime with simple injector?

我知道我可以将值传递给单个实例:

container.Register(() => new Service(value));

但我想使用程序集集合注册实例集合,如下所示:

container.RegisterCollection<IService>(assemblies);

所有实例都具有相同的构造函数签名。如何将值传递给所有构造函数?

更新

由于史蒂文的评论,我应该澄清我想传递的值是 CancellationToken

你能用一个简单的 foreach 循环来完成这个吗?此代码未经测试...

Collection<IService> myServices = new Collection<IService>();
myServices.Add(service1);
myServices.Add(service2);

foreach (IService svc in myServices) 
{
     container.Register(svc);
}

依赖原始值不是一个好主意。服务应该依赖于抽象。创建一个新接口来描述提供必要值的服务,并让实例依赖于它。如果不同的实例需要不同的值,它们应该依赖于单独的接口来提供值。 This answer 提供了更多详细信息,并举例说明了如何实现您正在尝试做的事情。