등록 된 각 IService에 대해 동시에 실행되는 여러 작업을 시작하는 Windows 서비스가 있습니다. 각 IService는 각각 종속성을 사용하는 몇 명의 관리자를 사용합니다. 서비스 (예 : 각 서비스에는 관리자가 공유하는 종속성의 단일 항목이 있음)가있는 모든 관리자에 대해 사용되는 종속성의 단일 항목을 갖 춥니 다. HeirarchialLifeTimeManager에 종속성을 등록했습니다. 각 IService를 작성하거나 등록하여 종속성의 자체 싱글 톤을 얻는 방법은 무엇입니까?서비스 당 싱글 톤을 얻는 UnityContainer
var _container = new UnityContainer();
_container.RegisterType<Dependency>(new HierarchicalLifetimeManager());
_container.RegisterType<MgrA1>();
_container.RegisterType<MgrA2>();
_container.RegisterType<MgrB1>();
_container.RegisterType<MgrB2>();
_container.RegisterType<IService, SvcA>("A");
_container.RegisterType<IService, SvcB>("B");
var services = _container.Resolve<IService[]>()
foreach(var svc in services)
{
Task.Factory.StartNew(() => svc.Start());
}
// dependencies (via constructors)
SvcA(MgrA1, MgrA2)
SvcB(MgrB1, MgrB2)
MgrA1(Dependency)
MgrA2(Dependency)
MgrB1(Dependency)
MgrB2(Dependency)
나는 종속성의 두 인스턴스 SvcA 및 관리자를위한 하나, 및 SvcB 및 관리자를위한 하나 싶어. .CreateChildContainer()를 사용하여 자체 하위 컨테이너에 각 서비스를 등록하려고 시도했지만 부모 컨테이너에서 호출 될 때 해결되지 않아 모든 서비스가 시작되고 시작됩니다.