現在創建Engine
時,它需要新的Compoment
,並且Engine
將「this」本身傳遞給Component
。連接兩個對象的依賴注入
在創建Component
時,需要知道其父Engine
並通過調用其IntegrateComponent()
函數與其集成。
這是一種循環參考的情況。我如何在DI中執行此操作? (在我的情況下,溫莎城堡)
public class Engine : IEngine {
private IComponent _someComponent;
public Engine() {
_component = new Component(this);
}
public void IntegrateComponent() {
//init component...
}
}
public class Component : IComponent {
private readonly IEngine _engine;
public Component(IEngine engine) {
_engine = engine;
_engine.IntegrateComponent();
}
}
static void Main() {
var engine = new Engine();
}
編輯----------------------------------- -----
我想是這樣......
Register<IComponent>().ImplementedBy<Component>();
Register<IEngine>().ImplementedBy<Engine>();
---> Resolve<IEngine>(); ...
,不過爲什麼我要告訴DI這款發動機&這個組件參考對方?
您需要在哪裏DI? (你能舉一個你想要做什麼的例子嗎?) –