diff --git a/src/Umbraco.Core/ServiceCollectionExtensions.cs b/src/Umbraco.Core/ServiceCollectionExtensions.cs index e6fcd43af1..d1c89ea17e 100644 --- a/src/Umbraco.Core/ServiceCollectionExtensions.cs +++ b/src/Umbraco.Core/ServiceCollectionExtensions.cs @@ -13,18 +13,15 @@ namespace Umbraco.Core => services.Replace(ServiceDescriptor.Singleton()); /// - /// Registers a unique service as a single instance implementing two interfaces. + /// Registers a singleton instance against multiple interfaces. /// - /// - /// Hat-tip: https://stackoverflow.com/a/55402016/489433 - /// - public static void AddUnique(this IServiceCollection services) + public static void AddMultipleUnique(this IServiceCollection services) where TService1 : class where TService2 : class where TImplementing : class, TService1, TService2 { - services.Replace(ServiceDescriptor.Singleton()); - services.Replace(ServiceDescriptor.Singleton(x => (TImplementing)x.GetService())); + services.AddUnique(); + services.AddUnique(factory => (TImplementing) factory.GetRequiredService()); } public static void AddUnique(this IServiceCollection services) diff --git a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs index 832cfdb488..2ba38b6e02 100644 --- a/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs +++ b/src/Umbraco.Web.Common/Runtime/AspNetCoreComposer.cs @@ -49,13 +49,12 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddUnique(); // Our own netcore implementations - composition.Services.AddUnique(); - composition.Services.AddUnique(); + composition.Services.AddMultipleUnique(); composition.Services.AddUnique(); // The umbraco request lifetime - composition.Services.AddUnique(); + composition.Services.AddMultipleUnique(); // Password hasher composition.Services.AddUnique(); @@ -64,8 +63,7 @@ namespace Umbraco.Web.Common.Runtime composition.Services.AddTransient(); composition.Services.AddUnique(); - composition.Services.AddUnique(); - composition.Services.AddUnique(); + composition.Services.AddMultipleUnique(); composition.Services.AddUnique();