Внедрить родителя в дочерний класс с помощью Ninject - PullRequest
0 голосов
/ 12 ноября 2018

Допустим, у меня есть следующий код, в котором для зависимости требуется ссылка на родителя.

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;
    }
}

Можно ли сказать Нэнси всегда использовать текущий экземпляр для разрешения зависимости.

Очевидно, я мог бы использовать фабричный шаблон, на самом деле это то, что я делаю с Ninject.Extensions.Factory .

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

Но мне интересно, смогу ли я изменить это, чтобы избежать фабрики.

...