diff --git a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolver.cs b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolver.cs index 98c5887fb1..91899a0ca1 100644 --- a/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolver.cs +++ b/src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolver.cs @@ -1,10 +1,9 @@ using Volo.Abp.MultiTenancy; -using Volo.DependencyInjection; using Volo.ExtensionMethods.Collections.Generic; namespace Volo.Abp.AspNetCore.MultiTenancy { - public class QueryStringTenantResolver : ITenantResolver, ITransientDependency + public class QueryStringTenantResolver : ITenantResolver { public const string TenantIdKey = "__tenantId"; diff --git a/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreModule.cs b/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreModule.cs index 7777104d83..b4896353fc 100644 --- a/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreModule.cs +++ b/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreModule.cs @@ -1,5 +1,4 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Modularity; namespace Volo.Abp.AspNetCore.Mvc @@ -9,7 +8,6 @@ namespace Volo.Abp.AspNetCore.Mvc { public void ConfigureServices(IServiceCollection services) { - services.AddObjectAccessor(); services.AddAssemblyOf(); } } diff --git a/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs b/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs index 703ec1df6b..f6df6760c2 100644 --- a/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs +++ b/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs @@ -10,10 +10,15 @@ namespace Volo.Abp.AspNetCore { public void ConfigureServices(IServiceCollection services) { - services.TryAddSingleton(); + AddAspNetServices(services); services.AddObjectAccessor(); services.AddAssemblyOf(); } + + private static void AddAspNetServices(IServiceCollection services) + { + services.TryAddSingleton(); + } } } diff --git a/src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionCommonExtensions.cs b/src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionCommonExtensions.cs new file mode 100644 index 0000000000..c454964128 --- /dev/null +++ b/src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionCommonExtensions.cs @@ -0,0 +1,26 @@ +using System; +using System.Linq; + +namespace Microsoft.Extensions.DependencyInjection +{ + public static class ServiceCollectionCommonExtensions + { + public static T GetSingletonInstanceOrNull(this IServiceCollection services) + { + return (T)services + .FirstOrDefault(d => d.ServiceType == typeof(T)) + ?.ImplementationInstance; + } + + public static T GetSingletonInstance(this IServiceCollection services) + { + var service = services.GetSingletonInstanceOrNull(); + if (service == null) + { + throw new InvalidOperationException("Could not find singleton service: " + typeof(T).AssemblyQualifiedName); + } + + return service; + } + } +} \ No newline at end of file diff --git a/src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/CommonServiceCollectionExtensions.cs b/src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionObjectAccessorExtensions.cs similarity index 58% rename from src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/CommonServiceCollectionExtensions.cs rename to src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionObjectAccessorExtensions.cs index a8dc9a77c3..c3ccf423d2 100644 --- a/src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/CommonServiceCollectionExtensions.cs +++ b/src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionObjectAccessorExtensions.cs @@ -4,24 +4,16 @@ using Volo.DependencyInjection; namespace Microsoft.Extensions.DependencyInjection { - public static class CommonServiceCollectionExtensions + public static class ServiceCollectionObjectAccessorExtensions { - public static T GetSingletonInstanceOrNull(this IServiceCollection services) + public static ObjectAccessor TryAddObjectAccessor(this IServiceCollection services) { - return (T)services - .FirstOrDefault(d => d.ServiceType == typeof(T)) - ?.ImplementationInstance; - } - - public static T GetSingletonInstance(this IServiceCollection services) - { - var service = services.GetSingletonInstanceOrNull(); - if (service == null) + if (services.Any(s => s.ServiceType == typeof(ObjectAccessor))) { - throw new InvalidOperationException("Could not find singleton service: " + typeof(T).AssemblyQualifiedName); + return services.GetSingletonInstance>(); } - return service; + return services.AddObjectAccessor(); } public static ObjectAccessor AddObjectAccessor(this IServiceCollection services) @@ -36,6 +28,11 @@ namespace Microsoft.Extensions.DependencyInjection public static ObjectAccessor AddObjectAccessor(this IServiceCollection services, ObjectAccessor accessor) { + if (services.Any(s => s.ServiceType == typeof(ObjectAccessor))) + { + throw new Exception("An object accessor is registered before for type: " + typeof(T).AssemblyQualifiedName); + } + services.AddSingleton(typeof(IObjectAccessor), accessor); services.AddSingleton(typeof(ObjectAccessor), accessor);