Как я могу привязать существующий контейнер к другому? - PullRequest
1 голос
/ 05 ноября 2010

Я унаследовал экземпляр от класса UnityContainer и хочу создать дополнительный экземпляр, который будет "наследовать" все регистрации предыдущего?

Правильно ли я понимаю, что метод AddExtension делает то, что я ожидаю?

public class MyUnityContainer : UnityContainer
{
 public MyUnityContainer(MyUnityContainer containerParent)
 { 
   if ( containerParent!=null )
     this.AddExtention(containerParent);
 }

 public static void Test()
 {
   MyUnityContainer cont1 = new MyUnityContainer();
   cont1.RegisterType<IA,A>();
   MyUnityContainer cont2 = new MyUnityContainer(cont1);
   IA a = cont2.Resolve<IA>();
}

Должно ли это работать? Если нет, как можно достичь такой функциональности?

Я мог бы сделать MyUnityContainer не унаследованным от UnityContainer, но содержащим его («имеет» вместо «является»), но я не хочу реализовывать интерфейс IUnityContainer в своем классе MyUnityContainer .

1 Ответ

0 голосов
/ 05 ноября 2010

Нет, это не то, что делают расширения.Расширения добавляют новые функции или регистрации в контейнер, а не устанавливают отношения наследования.

То, что вы хотите, это дочерний контейнер.Вы вызываете parent.CreateChildContainer, и это должно делать то, что вы хотите, за исключением того, что дочерним будет UnityContainer, а не MyUnityContainer.

Что делает MyUnityContainer?Возможно, есть способ заставить его работать без подкласса?

...