Тип ограничения Unity \ разрешение экземпляра в дочернем контейнере - PullRequest
0 голосов
/ 13 мая 2011

Как я могу ограничить разрешение типов в дочернем unityContainer?

* 1003 например *

internal interface ITestInterface
{}
public class Test:ITestInterface
{}
class A
{
    public A(ITestInterface testInterface)
    {    
    }
}

class Program
{
    static void Main(string[] args)
    {

        var container = new UnityContainer();

        Test test = new Test();
        container.RegisterInstance<ITestInterface>(test);

        var childContainer = container.CreateChildContainer();
        //shoudl resolved normally
        container.Resolve<A>();
        //should throw exception!
        //because i want restrict resolving ITestInterface instance from parent container!            
        childContainer.Resolve<A>();                       
    }
}

1 Ответ

2 голосов
/ 16 мая 2011

Это действительно неправильно.Серьезно пересмотрите свои иерархии контейнеров, вы можете вообще не хотеть иерархию здесь.

Однако, если вы абсолютно не хотите этого делать, вы можете подделать ее.Перерегистрируйте тип в дочернем элементе с помощью InjectionFactory, которая выдает исключение.

childContainer.RegisterType<A>(
    new InjectionContructor(c => throw new InvalidOperationException(
        "No type A for you!"))));
...