2011-01-20 14 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));