我想用Ninject来编写一个对象图,其中父对象包含一个子对象,并且子对象也维护对其父对象的引用。Ninject - 如何从注入的子对象引用父对象
没有依赖注入,它会是这个样子:
public interface IParent { }
public interface IChild { }
public class Parent : IParent
{
public Parent()
{
Child = new Child(this);
}
public IChild Child { get; private set; }
}
public class Child : IChild
{
public Child(IParent parent)
{
Parent = parent;
}
public IParent Parent { get; private set; }
}
我希望能够配置Ninject绑定来支持这种关系,使得IParent
多个实例可以在短暂的范围被实例化,每个实例都会自动填充一个IChild
实例,该实例持有对其的循环引用。
我读过的评论表明Ninject可以支持循环关系,但是我还没有能够达到工作配置。
有什么建议吗?
谢谢,
Tim。
至少我试过......我没有成功,也没有很多reasources到这个主题。这是因为你首先不应该有循环依赖。你应该考虑使用不同的设计。 –
@Viktor - 是的,我也对循环引用感到不舒服,但我还没有找到任何其他可以做我需要的设计。无论如何,我已经找到了一个合理的解决方法(下面发布)。看看其他人是否发布了真正的解决方案将是有趣的。 –