现在在创建时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 这个引擎和这个组件相互引用呢?