Skip to content

Commit

Permalink
v8 refactoring and test updates
Browse files Browse the repository at this point in the history
  • Loading branch information
dansiegel committed Aug 28, 2020
1 parent 122d3fa commit 886c6a6
Show file tree
Hide file tree
Showing 22 changed files with 587 additions and 785 deletions.
32 changes: 32 additions & 0 deletions src/Prism.Container.Extensions/RegisterOnceExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Prism.Ioc;

namespace Prism.Ioc
{
public static class RegisterOnceExtensions
{
public static IContainerRegistry RegisterSingletonOnce<TFrom, TTo>(this IContainerRegistry containerRegistry)
where TTo : TFrom
{
if (!containerRegistry.IsRegistered<TFrom>())
{
containerRegistry.RegisterSingleton<TFrom, TTo>();
}

return containerRegistry;
}

public static IContainerRegistry RegisterManySingletonOnce<TImpl>(this IContainerRegistry containerRegistry, params Type[] services)
{
if (!containerRegistry.IsRegistered<TImpl>() && !services.Any(s => containerRegistry.IsRegistered(s)))
{
containerRegistry.RegisterManySingleton<TImpl>(services);
}

return containerRegistry;
}
}
}
1 change: 1 addition & 0 deletions src/Prism.DryIoc.Extensions/ContainerExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public DryIocContainerExtension(IContainer container)
typeof(IContainerProvider),
typeof(IServiceScopeFactory)
}, this);
Instance.RegisterDelegate<IServiceProvider>(r => r);
}

IServiceScope IServiceScopeFactory.CreateScope()
Expand Down
15 changes: 10 additions & 5 deletions src/Prism.DryIoc.Extensions/PrismContainerExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,22 @@ public static class PrismContainerExtension
{
public static Rules DefaultRules => DryIocContainerExtension.DefaultRules;

public static IContainerExtension Current => ContainerLocator.Current;
public static IContainerExtension Current => ContainerLocator.Current ?? Init();

public static void Init() =>
public static IContainerExtension Init() =>
Init(DefaultRules);

public static void Init(Rules rules) =>
public static IContainerExtension Init(Rules rules) =>
Init(new global::DryIoc.Container(rules));

public static void Init(IContainer container)
public static IContainerExtension Init(IContainer container)
{
ContainerLocator.SetContainerExtension(() => new DryIocContainerExtension(container));
if (ContainerLocator.Current != null)
throw new NotSupportedException("The PrismContainerExtension has already been initialized.");

var extension = new DryIocContainerExtension(container);
ContainerLocator.SetContainerExtension(() => extension);
return extension;
}

internal static void Reset()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

namespace Prism.Ioc
{
public static class IContainerRegistryExtensions
public static class RequiredTypesExtensions
{
// Provided to keep compatibility with Prism 8.0
private const string NavigationServiceName = "PageNavigationService";
Expand All @@ -32,8 +32,8 @@ public static void RegisterRequiredTypes(this IContainerRegistry containerRegist
containerRegistry.RegisterSingletonOnce<IModuleManager, ModuleManager>();
containerRegistry.RegisterSingletonOnce<IModuleInitializer, ModuleInitializer>();
containerRegistry.RegisterSingletonOnce<IDialogService, DialogService>();
containerRegistry.Register<INavigationService, ErrorReportingNavigationService>(NavigationServiceName);
containerRegistry.Register<INavigationService, ErrorReportingNavigationService>();
//containerRegistry.RegisterScoped<INavigationService, ErrorReportingNavigationService>(NavigationServiceName);
containerRegistry.RegisterScoped<INavigationService, ErrorReportingNavigationService>();
var isRegistered = containerRegistry.IsRegistered<INavigationService>(NavigationServiceName);
}

Expand Down

This file was deleted.

Loading

0 comments on commit 886c6a6

Please sign in to comment.