具有两个接口的Prism 7 Singleton

时间:2018-10-07 11:51:26

标签: c# prism

我正在查看Prism 7中引入的容器抽象,并且不确定如何通过两个接口注册一个单例。

从统一的背景出发,我首先注册单例(无接口),然后注册两个接口(不注册为单例):

containerRegistry.RegisterSingleton<FactoryController>();
containerRegistry.Register<IFactoryController, FactoryController>();
containerRegistry.Register<IFactoryToken, FactoryController>();

这很好,因为我的容器是统一的。但是它也可以与其他容器一起使用吗?

对于Prism 7提供的容器抽象的行为是否有任何规范?

1 个答案:

答案 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>()));