Unity分层注入

| 请帮助我解决以下目标: 我有一个接口IRepository定义了属性Context,作为一个示例:
interface IRepository
{
   IContext Context { get; set; }
}

interface IOne : IRepository
{
}

interface ITwo : IRepository
{
}
实现中的属性Context具有DependencyAttribyte,并且所有实现均按以下示例注册:
container.RegisterType<IOne, One>();
container.RegisterType<ITwo, Two>();
container.RegisterType<IContext, Context>();
我想从继承属性\“ Context \”的值解析实现\“ One \”的实现\“ Two \”; 作为一个例子:
public class One : IOne
{
   [Dependency]
   public IContext Context { get; set; }

   [Dependency]
   public IUnityContainer Container { get; set; }

   public void Test1()
   {
       Context = new Context();
       var two = Container.Resolve<ITwo>();

       // I want that these values would been equal
       Assert.AreEqual(Context, two.Context);
   }
}
如果您将能够展示出另一种方法来解析具有值继承的实现,那就太好了。     
已邀请:
您可以使用
PerResolveLifetimeManager
。它只是一种短暂的生活方式,但是该实例将在整个对象图中重复使用。但是,要使此方法起作用,您将不得不从
Test1
方法替换对
container.Resolve
的调用。始终喜欢使用构造函数注入而不是属性注入,并防止从类内部调用容器。这种编码方式称为服务定位器反模式。     
您可以使用ContainerControlledLifetimeManager注册“ 6”。因此,每次对“ 7”的调用都将返回相同的实例。 另一种方法是注册IContext的实例。     

要回复问题请先登录注册