具有两个接口的 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>()));
我正在查看 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>()));