원하는 기능을 수행해야하는 개체를 요구하려면 집계를 모델링하고 나중에 종속성 삽입 (What is dependency injection? 참조)을 사용해야합니다.
각 노드는 domain model과 같습니다. 이 같은
뭔가 :
public class A
{
// You inject some service IServiceX
public A(IServiceX serviceX)
{
ServiceX = serviceX;
}
private IServiceX ServiceX { get; }
// B is associated to A
public B B { get; set; }
// So you can do some stuff calling the whole ServiceX
public void DoStuff()
{
ServiceX.DoWhatever();
}
}
public class B
{
public B(IServiceY serviceY)
{
ServiceY = serviceY;
}
private IServiceY ServiceY { get; }
// C is associated to B
public C C { get; set; }
public void DoStuff()
{
ServiceY.DoWhatever();
}
}
public class C
{
public C(IServiceZ serviceZ)
{
IServiceZ = serviceZ;
}
private IServiceZ IServiceZ { get; }
public void DoStuff()
{
IServiceZ.DoWhatever();
}
}
물론, 이러한 집합체의 일부에 서비스보다 더 주입 할 수있다. 각 집계가 다른 집계와 연결되기 때문에 트리를 트래버스 할 수 있어야합니다.
나는 트리의 노드가 아닌 노드에 서브 시스템을 연결하는 것을 의미했습니다. 나는 의존성 주입이 유망 해 보인다고 생각한다. 의존성 주입은 이미 인스턴스화 된 객체를 주입 할 수 있습니까? 아니면 각 생성자 또는 속성에 대해 새 인스턴스를 주입합니까? – Adam1980
@ Adam1980 기존 인스턴스를 삽입 할 수 있습니다. Caslte Windsor는 그것을 할 수 있습니다. 다른 사람들도이 기능을 소유하고 있는지 나는 알 수 없습니다. 예를 들어, 'container.Register (Component.For(). 인스턴스 (인스턴스))' –
@ Adam1980 아마도 당신은 인스턴스를 직접 만들고 싶지 않지만 Castle Windsor와 같은 바운드 라이프 스타일을 이미 사용하고 있습니다. https://github.com/castleproject/Windsor/blob/master/docs/lifestyles.md#bound-to-nearest를 참조하십시오. –