我知道我可以将值传递给单个实例:
container.Register(() => new Service(value));
但我想使用程序集集合注册一个实例集合,如下所示:
container.RegisterCollection<IService>(assemblies);
所有实例都具有相同的构造函数签名。如何将值传递给所有构造函数?
更新
由于史蒂文的评论,我应该澄清我想传递的值是CancellationToken
。
答案 0 :(得分:1)
依赖原始价值并不是一个好主意。服务应该取决于抽象。创建一个新接口,描述提供必要值并使实例依赖于该服务的服务。如果不同的实例需要不同的值,它们应该依赖于单独的接口来提供值。 This answer提供了更多详细信息,并举例说明了如何实现您的目标。
答案 1 :(得分:0)
你能用一个简单的foreach循环来完成这个吗?此代码未经过测试......
Collection<IService> myServices = new Collection<IService>();
myServices.Add(service1);
myServices.Add(service2);
foreach (IService svc in myServices)
{
container.Register(svc);
}