我正在使用Unity.MVC3和Unity.WCF。使用这些包,您可以使用父容器注册类型,然后使用子容器创建控制器/服务。使用HierarchicalLifetimeManager
注册的类型仅限于每个请求一个实例。
我遇到了以IUnityContainer
作为构造函数参数的类的问题。我这样注册这些。
container.RegisterType<IFoo, Foo>(new InjectionConstructor(container));
这会导致使用对父容器的引用而不是子容器创建Foo。如果我然后解析了使用HierarchicalLifetimeManager
注册的类型,我将获得第二个实例。此外,此实例不会与子容器一起使用。
有没有办法注册我的类型,以便他们将收到用于解决它们的子容器?
答案 0 :(得分:2)
如果一个对象具有IUnityContainer类型的依赖关系,它将自动注入解析容器。你不需要配置任何东西,它只会起作用。