2011-01-20 101 views
0

我得到了以下测试:相同的实例

[TestMethod] 
    public void TestTwoInterfacesOneNamed() 
    { 
     _container.RegisterType<MyTestClass, MyTestClass>(new ContainerControlledLifetimeManager()); 
     _container.RegisterType(typeof(ITestClass), typeof(MyTestClass)); 
     _container.RegisterType(typeof(IStartable), typeof(MyTestClass), "nameSoThatAllStartablesCanBeFetched"); 
     var resolveAll = _container.ResolveAll<IStartable>(); 
     Assert.AreSame(_container.Resolve(typeof(ITestClass)), resolveAll.First()); 
    } 

如何获得两个解决了同一个实例?只要没有命名,注册具体的技巧首先适用于所有接口。我不想注册一个实例。

回答

1

它的完成这样的:

 Func<IUnityContainer, object> resolver = (unity) => unity.Resolve(typeof(MyTestClass)); 
     _container.RegisterType(typeof(IStartable), 
      typeof(MyTestClass), 
      "nameSoThatAllStartablesCanBeFetched", 
      new InjectionFactory(resolver)); 
相关问题