具有两个接口的 Prism 7 单例

Prism 7 Singleton with two Interfaces

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

来自统一背景,我先注册单例(没有接口),然后注册两个接口(不是单例):

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

这很好用,因为我的容器是 unity。但它也适用于其他容器吗?

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

Prism 7 Container 抽象特意简单,旨在处理大部分但不是全部的注册需求。对于更复杂的场景,您需要使用扩展方法 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>()));