Browse Source

Revised code base.

pull/81/head
Halil İbrahim Kalkan 10 years ago
parent
commit
38dc378db3
  1. 3
      src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolver.cs
  2. 4
      src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreModule.cs
  3. 7
      src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs
  4. 26
      src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionCommonExtensions.cs
  5. 23
      src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionObjectAccessorExtensions.cs

3
src/Volo.Abp.AspNetCore.MultiTenancy/Volo/Abp/AspNetCore/MultiTenancy/QueryStringTenantResolver.cs

@ -1,10 +1,9 @@
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Volo.DependencyInjection;
using Volo.ExtensionMethods.Collections.Generic; using Volo.ExtensionMethods.Collections.Generic;
namespace Volo.Abp.AspNetCore.MultiTenancy namespace Volo.Abp.AspNetCore.MultiTenancy
{ {
public class QueryStringTenantResolver : ITenantResolver, ITransientDependency public class QueryStringTenantResolver : ITenantResolver
{ {
public const string TenantIdKey = "__tenantId"; public const string TenantIdKey = "__tenantId";

4
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; using Volo.Abp.Modularity;
namespace Volo.Abp.AspNetCore.Mvc namespace Volo.Abp.AspNetCore.Mvc
@ -9,7 +8,6 @@ namespace Volo.Abp.AspNetCore.Mvc
{ {
public void ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.AddObjectAccessor<IApplicationBuilder>();
services.AddAssemblyOf<AbpAspNetCoreMvcModule>(); services.AddAssemblyOf<AbpAspNetCoreMvcModule>();
} }
} }

7
src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/AbpAspNetCoreModule.cs

@ -10,10 +10,15 @@ namespace Volo.Abp.AspNetCore
{ {
public void ConfigureServices(IServiceCollection services) public void ConfigureServices(IServiceCollection services)
{ {
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>(); AddAspNetServices(services);
services.AddObjectAccessor<IApplicationBuilder>(); services.AddObjectAccessor<IApplicationBuilder>();
services.AddAssemblyOf<AbpAspNetCoreModule>(); services.AddAssemblyOf<AbpAspNetCoreModule>();
} }
private static void AddAspNetServices(IServiceCollection services)
{
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
} }
} }

26
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<T>(this IServiceCollection services)
{
return (T)services
.FirstOrDefault(d => d.ServiceType == typeof(T))
?.ImplementationInstance;
}
public static T GetSingletonInstance<T>(this IServiceCollection services)
{
var service = services.GetSingletonInstanceOrNull<T>();
if (service == null)
{
throw new InvalidOperationException("Could not find singleton service: " + typeof(T).AssemblyQualifiedName);
}
return service;
}
}
}

23
src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/CommonServiceCollectionExtensions.cs → src/Volo.DependencyInjection/Microsoft/Extensions/DependencyInjection/ServiceCollectionObjectAccessorExtensions.cs

@ -4,24 +4,16 @@ using Volo.DependencyInjection;
namespace Microsoft.Extensions.DependencyInjection namespace Microsoft.Extensions.DependencyInjection
{ {
public static class CommonServiceCollectionExtensions public static class ServiceCollectionObjectAccessorExtensions
{ {
public static T GetSingletonInstanceOrNull<T>(this IServiceCollection services) public static ObjectAccessor<T> TryAddObjectAccessor<T>(this IServiceCollection services)
{ {
return (T)services if (services.Any(s => s.ServiceType == typeof(ObjectAccessor<T>)))
.FirstOrDefault(d => d.ServiceType == typeof(T))
?.ImplementationInstance;
}
public static T GetSingletonInstance<T>(this IServiceCollection services)
{
var service = services.GetSingletonInstanceOrNull<T>();
if (service == null)
{ {
throw new InvalidOperationException("Could not find singleton service: " + typeof(T).AssemblyQualifiedName); return services.GetSingletonInstance<ObjectAccessor<T>>();
} }
return service; return services.AddObjectAccessor<T>();
} }
public static ObjectAccessor<T> AddObjectAccessor<T>(this IServiceCollection services) public static ObjectAccessor<T> AddObjectAccessor<T>(this IServiceCollection services)
@ -36,6 +28,11 @@ namespace Microsoft.Extensions.DependencyInjection
public static ObjectAccessor<T> AddObjectAccessor<T>(this IServiceCollection services, ObjectAccessor<T> accessor) public static ObjectAccessor<T> AddObjectAccessor<T>(this IServiceCollection services, ObjectAccessor<T> accessor)
{ {
if (services.Any(s => s.ServiceType == typeof(ObjectAccessor<T>)))
{
throw new Exception("An object accessor is registered before for type: " + typeof(T).AssemblyQualifiedName);
}
services.AddSingleton(typeof(IObjectAccessor<T>), accessor); services.AddSingleton(typeof(IObjectAccessor<T>), accessor);
services.AddSingleton(typeof(ObjectAccessor<T>), accessor); services.AddSingleton(typeof(ObjectAccessor<T>), accessor);
Loading…
Cancel
Save