Допустим, у меня есть следующий код, в котором для зависимости требуется ссылка на родителя.
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);
}
}
Но мне интересно, смогу ли я изменить это, чтобы избежать фабрики.