我有从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
课程中。
答案 0 :(得分:-1)
不,这不是扩展所做的。扩展会向容器添加新功能或注册,而不是设置继承关系。
你想要的是一个儿童容器。你调用parent.CreateChildContainer,这应该做你想要的 - 除了孩子将是UnityContainer,而不是MyUnityContainer。
MyUnityContainer做什么?也许有一种方法可以让它在没有子类的情况下工作?