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.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";

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;
namespace Volo.Abp.AspNetCore.Mvc
@ -9,7 +8,6 @@ namespace Volo.Abp.AspNetCore.Mvc
{
public void ConfigureServices(IServiceCollection services)
{
services.AddObjectAccessor<IApplicationBuilder>();
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)
{
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
AddAspNetServices(services);
services.AddObjectAccessor<IApplicationBuilder>();
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
{
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
.FirstOrDefault(d => d.ServiceType == typeof(T))
?.ImplementationInstance;
}
public static T GetSingletonInstance<T>(this IServiceCollection services)
{
var service = services.GetSingletonInstanceOrNull<T>();
if (service == null)
if (services.Any(s => s.ServiceType == typeof(ObjectAccessor<T>)))
{
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)
@ -36,6 +28,11 @@ namespace Microsoft.Extensions.DependencyInjection
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(ObjectAccessor<T>), accessor);
Loading…
Cancel
Save