Merge pull request #9330 from rustybox/netcore/netcore
NetCore: Fixes registration issue (continued)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user