2010-11-05 6 views
1

J'ai une instance héritée de la classe UnityContainer et je souhaite créer une instance supplémentaire qui "héritera" de tous les enregistrements de la précédente? Est-ce que je comprends correctement que la méthode AddExtension fait ce que j'attends?Comment puis-je lier un conteneur existant à un autre?

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>(); 
} 

Est-ce que cela devrait fonctionner? Si non, quel est le moyen d'obtenir une telle fonctionnalité?

je pouvais faire MyUnityContainer pas hérité de UnityContainer, mais contenant (« a un » au lieu de « est un »), mais je ne veux pas mettre en œuvre l'interface IUnityContainer dans ma classe MyUnityContainer.

Répondre

-1

Non, ce n'est pas ce que font les extensions. Les extensions ajoutent de nouvelles fonctionnalités ou enregistrements au conteneur, et non des relations d'héritage.

Ce que vous voulez, c'est un conteneur enfant. Vous appelez parent.CreateChildContainer, et cela devrait faire ce que vous voulez - sauf que l'enfant sera un UnityContainer, pas MyUnityContainer.

Que fait MyUnityContainer? Peut-être y at-il un moyen de le faire fonctionner sans la sous-classe?