使用Unity定制对象作用域

时间:2014-01-08 22:42:05

标签: c# dependency-injection unity-container

这里的问题非常简单,但我很难找到任何信息。我有一个非常简单的父/子层次结构......

public class Parent : IParent
{
    [Dependency]
    public IChild Child { get; set; }
}

public class Child : IChild
{
    [Dependency]
    public IParent Parent { get; set; }
}

...我的容器注册正是您所期望的:

this.Container.RegisterType<IParent, Parent>();
this.Container.RegisterType<IChild, Child>();

当容器创建父实例时,它会自动创建并注入子实例的新实例,但如何将父引用注入该子实例?

基本上我试图找到与Ninject的InScope方法相当的Unity。

1 个答案:

答案 0 :(得分:1)

构造函数注入会为你解决这个问题吗?

public class Parent : IParent
{
    public IChild Child { get; set; }

    public Parent(IChild child)
    {
        child.Parent = this;
        this.Child = child;
    }
}

public class Child : IChild
{
    public IParent Parent { get; set; }
}

构造函数中的IChild由Unity解析,没有[Dependency]装饰。