Один и тот же экземпляр для обоих разделов (где имя указано при регистрации) - PullRequest
0 голосов
/ 20 января 2011

Я получил следующий тест:

    [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 Ответ

1 голос
/ 20 января 2011

Это сделано так:

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