我正在查看Prism 7中引入的容器抽象,并且不确定如何通过两个接口注册一个单例。
从统一的背景出发,我首先注册单例(无接口),然后注册两个接口(不注册为单例):
containerRegistry.RegisterSingleton<FactoryController>();
containerRegistry.Register<IFactoryController, FactoryController>();
containerRegistry.Register<IFactoryToken, FactoryController>();
这很好,因为我的容器是统一的。但是它也可以与其他容器一起使用吗?
对于Prism 7提供的容器抽象的行为是否有任何规范?
答案 0 :(得分:2)
Prism 7容器抽象的目的很简单,旨在处理大多数,但不是全部的注册需求。对于更复杂的场景,您将需要使用扩展方法GetContainer()
获取容器,如下所示:
containerRegistry.GetContainer().RegisterType<FactoryController>(new ContainerControlledLifetimeManager());
containerRegistry.GetContainer().RegisterType<IFactoryController>(new InjectionFactory(c => c.Resolve<FactoryController>()));
containerRegistry.GetContainer().RegisterType<IFactoryToken>(new InjectionFactory(c => c.Resolve<FactoryController>()));