Skip to content

Commit

Permalink
keep compatible with Prism 8
Browse files Browse the repository at this point in the history
  • Loading branch information
dansiegel committed Apr 6, 2020
1 parent c6a168e commit 58da72f
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 3 deletions.
6 changes: 5 additions & 1 deletion src/Prism.Forms.Extended/Ioc/IContainerRegistryExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ namespace Prism.Ioc
{
public static class IContainerRegistryExtensions
{
// Provided to keep compatibility with Prism 8.0
private const string NavigationServiceName = "PageNavigationService";

public static void RegisterRequiredTypes(this IContainerRegistry containerRegistry)
{
containerRegistry.RegisterManySingletonOnce<AggregateLogger>();
Expand All @@ -29,8 +32,9 @@ public static void RegisterRequiredTypes(this IContainerRegistry containerRegist
containerRegistry.RegisterSingletonOnce<IModuleManager, ModuleManager>();
containerRegistry.RegisterSingletonOnce<IModuleInitializer, ModuleInitializer>();
containerRegistry.RegisterSingletonOnce<IDialogService, DialogService>();
containerRegistry.Register<INavigationService, ErrorReportingNavigationService>(PrismApplicationBase.NavigationServiceName);
containerRegistry.Register<INavigationService, ErrorReportingNavigationService>(NavigationServiceName);
containerRegistry.Register<INavigationService, ErrorReportingNavigationService>();
var isRegistered = containerRegistry.IsRegistered<INavigationService>(NavigationServiceName);
}

public static void RegisterPrismCoreServices(this IServiceCollection services)
Expand Down
9 changes: 7 additions & 2 deletions src/Shiny.Prism/Navigation/NavigationServiceDelegate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ namespace Prism.Navigation
{
internal class NavigationServiceDelegate : INavigationServiceDelegate
{
private IContainerProvider Container { get; }
// Provided to keep compatibility with Prism 8.0
private const string NavigationServiceName = "PageNavigationService";

private IContainerExtension Container { get; }
private IApplicationProvider ApplicationProvider { get; }

public NavigationServiceDelegate(IContainerExtension container, IApplicationProvider applicationProvider)
Expand Down Expand Up @@ -128,7 +131,9 @@ private INavigationService GetNavigationService()
{
if (PrismApplicationBase.Current is null) return null;

var navService = Container.Resolve<INavigationService>(PrismApplicationBase.NavigationServiceName);
var navService = Container.IsRegistered<INavigationService>(NavigationServiceName) ?
Container.Resolve<INavigationService>(NavigationServiceName) :
Container.Resolve<INavigationService>();

if (navService is IPageAware pa)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,8 @@ public void ErrorReportingNavigationServiceIsRegistered()
{
var app = CreateApp();
INavigationService navService = null;

// TODO: Remove internal constants
var ex = Record.Exception(() => navService = app.Container.Resolve<INavigationService>(PrismApplicationBase.NavigationServiceName));

Assert.Null(ex);
Expand Down

0 comments on commit 58da72f

Please sign in to comment.