使用Ninject

时间:2018-11-12 08:14:23

标签: dependency-injection inversion-of-control ninject

假设我有以下代码,其中依赖项需要引用父项。

public class Parent: IParent
{
    private readonly IChild child;
    public Parent()
    {
        this.child = new Child(this);
    }
}

public class Child
{
    private readonly IParent parent;
    public Child(IParent parent)
    {
        this.parent = parent;
    }
}

现在,我想将ICO与Ninject一起使用,以重构此代码以注入IChild实例,该实例本身引用父对象

public class Parent: IParent
{
    private readonly IChild child;
    public Parent(IChild child)
    {
        this.child = child;
    }
}

是否可以告诉nancy始终使用当前实例来解决依赖关系。

很明显,我可以使用工厂模式,实际上这就是我对Ninject.Extensions.Factory使用atm的方式。

public class Parent: IParent
{
    private readonly IChild child;
    public Parent(Func<IParent, IChild> childFactory)
    {
        this.child = childFactory(this);
    }
}

但是我想知道是否可以重构它以避免工厂。

0 个答案:

没有答案