Merge pull request #9330 from rustybox/netcore/netcore

NetCore: Fixes registration issue (continued)
This commit is contained in:
Bjarke Berg
2020-11-03 07:06:14 +01:00
committed by GitHub
2 changed files with 7 additions and 12 deletions

View File

@@ -13,18 +13,15 @@ namespace Umbraco.Core
=> services.Replace(ServiceDescriptor.Singleton<TService, TImplementing>());
/// <summary>
/// Registers a unique service as a single instance implementing two interfaces.
/// Registers a singleton instance against multiple interfaces.
/// </summary>
/// <remarks>
/// Hat-tip: https://stackoverflow.com/a/55402016/489433
/// </remarks>
public static void AddUnique<TService1, TService2, TImplementing>(this IServiceCollection services)
public static void AddMultipleUnique<TService1, TService2, TImplementing>(this IServiceCollection services)
where TService1 : class
where TService2 : class
where TImplementing : class, TService1, TService2
{
services.Replace(ServiceDescriptor.Singleton<TService1, TImplementing>());
services.Replace(ServiceDescriptor.Singleton<TService2, TImplementing>(x => (TImplementing)x.GetService<TService1>()));
services.AddUnique<TService1, TImplementing>();
services.AddUnique<TService2>(factory => (TImplementing) factory.GetRequiredService<TService1>());
}
public static void AddUnique<TImplementing>(this IServiceCollection services)

View File

@@ -49,13 +49,12 @@ namespace Umbraco.Web.Common.Runtime
composition.Services.AddUnique<IRequestAccessor, AspNetCoreRequestAccessor>();
// Our own netcore implementations
composition.Services.AddUnique<IUmbracoApplicationLifetimeManager, AspNetCoreUmbracoApplicationLifetime>();
composition.Services.AddUnique<IUmbracoApplicationLifetime, AspNetCoreUmbracoApplicationLifetime>();
composition.Services.AddMultipleUnique<IUmbracoApplicationLifetimeManager, IUmbracoApplicationLifetime, AspNetCoreUmbracoApplicationLifetime>();
composition.Services.AddUnique<IApplicationShutdownRegistry, AspNetCoreApplicationShutdownRegistry>();
// The umbraco request lifetime
composition.Services.AddUnique<IUmbracoRequestLifetime, IUmbracoRequestLifetimeManager, UmbracoRequestLifetime>();
composition.Services.AddMultipleUnique<IUmbracoRequestLifetime, IUmbracoRequestLifetimeManager, UmbracoRequestLifetime>();
// Password hasher
composition.Services.AddUnique<IPasswordHasher, AspNetCorePasswordHasher>();
@@ -64,8 +63,7 @@ namespace Umbraco.Web.Common.Runtime
composition.Services.AddTransient<IIpResolver, AspNetCoreIpResolver>();
composition.Services.AddUnique<IUserAgentProvider, AspNetCoreUserAgentProvider>();
composition.Services.AddUnique<ISessionIdResolver, AspNetCoreSessionManager>();
composition.Services.AddUnique<ISessionManager, AspNetCoreSessionManager>();
composition.Services.AddMultipleUnique<ISessionIdResolver, ISessionManager, AspNetCoreSessionManager>();
composition.Services.AddUnique<IMarchal, AspNetCoreMarchal>();