【发布时间】:2019-07-07 09:31:08
【问题描述】:
您好,当我查看PrismApplicationBase 的实现时,我发现了以下代码
/// <summary>
/// Registers all types that are required by Prism to function with the container.
/// </summary>
/// <param name="containerRegistry"></param>
protected virtual void RegisterRequiredTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterInstance<IContainerExtension>(_containerExtension);
containerRegistry.RegisterSingleton<ILoggerFacade, EmptyLogger>();
containerRegistry.RegisterSingleton<IApplicationProvider, ApplicationProvider>();
containerRegistry.RegisterSingleton<IApplicationStore, ApplicationStore>();
containerRegistry.RegisterSingleton<IEventAggregator, EventAggregator>();
containerRegistry.RegisterSingleton<IDependencyService, DependencyService>();
containerRegistry.RegisterSingleton<IPageDialogService, PageDialogService>();
containerRegistry.RegisterSingleton<IDeviceService, DeviceService>();
containerRegistry.RegisterSingleton<IPageBehaviorFactory, PageBehaviorFactory>();
containerRegistry.RegisterSingleton<IModuleCatalog, ModuleCatalog>();
containerRegistry.RegisterSingleton<IModuleManager, ModuleManager>();
containerRegistry.RegisterSingleton<IModuleInitializer, ModuleInitializer>();
containerRegistry.Register<INavigationService, PageNavigationService>(NavigationServiceName);
}
我们可以看到导航服务的最后一次注册是NOT单例的。
所以我的两个问题是:
- 为什么
INavigationService的注册不像其他服务那样单例? - 为什么要给它命名(即
NavigationServiceName)
【问题讨论】:
标签: xamarin.forms prism