mirror of https://github.com/abpframework/abp.git
4 changed files with 135 additions and 144 deletions
@ -1,6 +1,133 @@ |
|||||
|
using JetBrains.Annotations; |
||||
|
using Microsoft.AspNetCore.Authorization; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Microsoft.Extensions.Localization; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Logging.Abstractions; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Aspects; |
||||
|
using Volo.Abp.Auditing; |
||||
|
using Volo.Abp.Authorization; |
||||
|
using Volo.Abp.Data; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
using Volo.Abp.Features; |
||||
|
using Volo.Abp.GlobalFeatures; |
||||
|
using Volo.Abp.Guids; |
||||
|
using Volo.Abp.Linq; |
||||
|
using Volo.Abp.Localization; |
||||
|
using Volo.Abp.MultiTenancy; |
||||
|
using Volo.Abp.ObjectMapping; |
||||
|
using Volo.Abp.Settings; |
||||
|
using Volo.Abp.Timing; |
||||
|
using Volo.Abp.Uow; |
||||
|
using Volo.Abp.Users; |
||||
|
using Volo.Abp.Validation; |
||||
|
|
||||
namespace Volo.Abp.Application.Services; |
namespace Volo.Abp.Application.Services; |
||||
|
|
||||
public abstract class ApplicationService : ApplicationServiceBase |
public abstract class ApplicationService : |
||||
|
IApplicationService, |
||||
|
IAvoidDuplicateCrossCuttingConcerns, |
||||
|
IValidationEnabled, |
||||
|
IUnitOfWorkEnabled, |
||||
|
IAuditingEnabled, |
||||
|
IGlobalFeatureCheckingEnabled, |
||||
|
ITransientDependency |
||||
{ |
{ |
||||
|
public IAbpLazyServiceProvider LazyServiceProvider { get; set; } |
||||
} |
|
||||
|
[Obsolete("Use LazyServiceProvider instead.")] |
||||
|
public IServiceProvider ServiceProvider { get; set; } |
||||
|
|
||||
|
public static string[] CommonPostfixes { get; set; } = { "AppService", "ApplicationService", "IntService", "IntegrationService", "Service" }; |
||||
|
|
||||
|
public List<string> AppliedCrossCuttingConcerns { get; } = new(); |
||||
|
|
||||
|
protected IUnitOfWorkManager UnitOfWorkManager => LazyServiceProvider.LazyGetRequiredService<IUnitOfWorkManager>(); |
||||
|
|
||||
|
protected IAsyncQueryableExecuter AsyncExecuter => LazyServiceProvider.LazyGetRequiredService<IAsyncQueryableExecuter>(); |
||||
|
|
||||
|
protected Type ObjectMapperContext { get; set; } |
||||
|
protected IObjectMapper ObjectMapper => LazyServiceProvider.LazyGetService<IObjectMapper>(provider => |
||||
|
ObjectMapperContext == null |
||||
|
? provider.GetRequiredService<IObjectMapper>() |
||||
|
: (IObjectMapper)provider.GetRequiredService(typeof(IObjectMapper<>).MakeGenericType(ObjectMapperContext))); |
||||
|
|
||||
|
protected IGuidGenerator GuidGenerator => LazyServiceProvider.LazyGetService<IGuidGenerator>(SimpleGuidGenerator.Instance); |
||||
|
|
||||
|
protected ILoggerFactory LoggerFactory => LazyServiceProvider.LazyGetRequiredService<ILoggerFactory>(); |
||||
|
|
||||
|
protected ICurrentTenant CurrentTenant => LazyServiceProvider.LazyGetRequiredService<ICurrentTenant>(); |
||||
|
|
||||
|
protected IDataFilter DataFilter => LazyServiceProvider.LazyGetRequiredService<IDataFilter>(); |
||||
|
|
||||
|
protected ICurrentUser CurrentUser => LazyServiceProvider.LazyGetRequiredService<ICurrentUser>(); |
||||
|
|
||||
|
protected ISettingProvider SettingProvider => LazyServiceProvider.LazyGetRequiredService<ISettingProvider>(); |
||||
|
|
||||
|
protected IClock Clock => LazyServiceProvider.LazyGetRequiredService<IClock>(); |
||||
|
|
||||
|
protected IAuthorizationService AuthorizationService => LazyServiceProvider.LazyGetRequiredService<IAuthorizationService>(); |
||||
|
|
||||
|
protected IFeatureChecker FeatureChecker => LazyServiceProvider.LazyGetRequiredService<IFeatureChecker>(); |
||||
|
|
||||
|
protected IStringLocalizerFactory StringLocalizerFactory => LazyServiceProvider.LazyGetRequiredService<IStringLocalizerFactory>(); |
||||
|
|
||||
|
protected IStringLocalizer L { |
||||
|
get { |
||||
|
if (_localizer == null) |
||||
|
{ |
||||
|
_localizer = CreateLocalizer(); |
||||
|
} |
||||
|
|
||||
|
return _localizer; |
||||
|
} |
||||
|
} |
||||
|
private IStringLocalizer _localizer; |
||||
|
|
||||
|
protected Type LocalizationResource { |
||||
|
get => _localizationResource; |
||||
|
set { |
||||
|
_localizationResource = value; |
||||
|
_localizer = null; |
||||
|
} |
||||
|
} |
||||
|
private Type _localizationResource = typeof(DefaultResource); |
||||
|
|
||||
|
protected IUnitOfWork CurrentUnitOfWork => UnitOfWorkManager?.Current; |
||||
|
|
||||
|
protected ILogger Logger => LazyServiceProvider.LazyGetService<ILogger>(provider => LoggerFactory?.CreateLogger(GetType().FullName) ?? NullLogger.Instance); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Checks for given <paramref name="policyName"/>.
|
||||
|
/// Throws <see cref="AbpAuthorizationException"/> if given policy has not been granted.
|
||||
|
/// </summary>
|
||||
|
/// <param name="policyName">The policy name. This method does nothing if given <paramref name="policyName"/> is null or empty.</param>
|
||||
|
protected virtual async Task CheckPolicyAsync([CanBeNull] string policyName) |
||||
|
{ |
||||
|
if (string.IsNullOrEmpty(policyName)) |
||||
|
{ |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
await AuthorizationService.CheckAsync(policyName); |
||||
|
} |
||||
|
|
||||
|
protected virtual IStringLocalizer CreateLocalizer() |
||||
|
{ |
||||
|
if (LocalizationResource != null) |
||||
|
{ |
||||
|
return StringLocalizerFactory.Create(LocalizationResource); |
||||
|
} |
||||
|
|
||||
|
var localizer = StringLocalizerFactory.CreateDefaultOrNull(); |
||||
|
if (localizer == null) |
||||
|
{ |
||||
|
throw new AbpException($"Set {nameof(LocalizationResource)} or define the default localization resource type (by configuring the {nameof(AbpLocalizationOptions)}.{nameof(AbpLocalizationOptions.DefaultResourceType)}) to be able to use the {nameof(L)} object!"); |
||||
|
} |
||||
|
|
||||
|
return localizer; |
||||
|
} |
||||
|
} |
||||
|
|||||
@ -1,133 +0,0 @@ |
|||||
using JetBrains.Annotations; |
|
||||
using Microsoft.AspNetCore.Authorization; |
|
||||
using Microsoft.Extensions.DependencyInjection; |
|
||||
using Microsoft.Extensions.Localization; |
|
||||
using Microsoft.Extensions.Logging; |
|
||||
using Microsoft.Extensions.Logging.Abstractions; |
|
||||
using System; |
|
||||
using System.Collections.Generic; |
|
||||
using System.Threading.Tasks; |
|
||||
using Volo.Abp.Aspects; |
|
||||
using Volo.Abp.Auditing; |
|
||||
using Volo.Abp.Authorization; |
|
||||
using Volo.Abp.Data; |
|
||||
using Volo.Abp.DependencyInjection; |
|
||||
using Volo.Abp.Features; |
|
||||
using Volo.Abp.GlobalFeatures; |
|
||||
using Volo.Abp.Guids; |
|
||||
using Volo.Abp.Linq; |
|
||||
using Volo.Abp.Localization; |
|
||||
using Volo.Abp.MultiTenancy; |
|
||||
using Volo.Abp.ObjectMapping; |
|
||||
using Volo.Abp.Settings; |
|
||||
using Volo.Abp.Timing; |
|
||||
using Volo.Abp.Uow; |
|
||||
using Volo.Abp.Users; |
|
||||
using Volo.Abp.Validation; |
|
||||
|
|
||||
namespace Volo.Abp.Application.Services; |
|
||||
|
|
||||
public abstract class ApplicationServiceBase : |
|
||||
IApplicationService, |
|
||||
IAvoidDuplicateCrossCuttingConcerns, |
|
||||
IValidationEnabled, |
|
||||
IUnitOfWorkEnabled, |
|
||||
IAuditingEnabled, |
|
||||
IGlobalFeatureCheckingEnabled, |
|
||||
ITransientDependency |
|
||||
{ |
|
||||
public IAbpLazyServiceProvider LazyServiceProvider { get; set; } |
|
||||
|
|
||||
[Obsolete("Use LazyServiceProvider instead.")] |
|
||||
public IServiceProvider ServiceProvider { get; set; } |
|
||||
|
|
||||
public static string[] CommonPostfixes { get; set; } = { "AppService", "ApplicationService", "IntService", "IntegrationService", "Service" }; |
|
||||
|
|
||||
public List<string> AppliedCrossCuttingConcerns { get; } = new(); |
|
||||
|
|
||||
protected IUnitOfWorkManager UnitOfWorkManager => LazyServiceProvider.LazyGetRequiredService<IUnitOfWorkManager>(); |
|
||||
|
|
||||
protected IAsyncQueryableExecuter AsyncExecuter => LazyServiceProvider.LazyGetRequiredService<IAsyncQueryableExecuter>(); |
|
||||
|
|
||||
protected Type ObjectMapperContext { get; set; } |
|
||||
protected IObjectMapper ObjectMapper => LazyServiceProvider.LazyGetService<IObjectMapper>(provider => |
|
||||
ObjectMapperContext == null |
|
||||
? provider.GetRequiredService<IObjectMapper>() |
|
||||
: (IObjectMapper)provider.GetRequiredService(typeof(IObjectMapper<>).MakeGenericType(ObjectMapperContext))); |
|
||||
|
|
||||
protected IGuidGenerator GuidGenerator => LazyServiceProvider.LazyGetService<IGuidGenerator>(SimpleGuidGenerator.Instance); |
|
||||
|
|
||||
protected ILoggerFactory LoggerFactory => LazyServiceProvider.LazyGetRequiredService<ILoggerFactory>(); |
|
||||
|
|
||||
protected ICurrentTenant CurrentTenant => LazyServiceProvider.LazyGetRequiredService<ICurrentTenant>(); |
|
||||
|
|
||||
protected IDataFilter DataFilter => LazyServiceProvider.LazyGetRequiredService<IDataFilter>(); |
|
||||
|
|
||||
protected ICurrentUser CurrentUser => LazyServiceProvider.LazyGetRequiredService<ICurrentUser>(); |
|
||||
|
|
||||
protected ISettingProvider SettingProvider => LazyServiceProvider.LazyGetRequiredService<ISettingProvider>(); |
|
||||
|
|
||||
protected IClock Clock => LazyServiceProvider.LazyGetRequiredService<IClock>(); |
|
||||
|
|
||||
protected IAuthorizationService AuthorizationService => LazyServiceProvider.LazyGetRequiredService<IAuthorizationService>(); |
|
||||
|
|
||||
protected IFeatureChecker FeatureChecker => LazyServiceProvider.LazyGetRequiredService<IFeatureChecker>(); |
|
||||
|
|
||||
protected IStringLocalizerFactory StringLocalizerFactory => LazyServiceProvider.LazyGetRequiredService<IStringLocalizerFactory>(); |
|
||||
|
|
||||
protected IStringLocalizer L { |
|
||||
get { |
|
||||
if (_localizer == null) |
|
||||
{ |
|
||||
_localizer = CreateLocalizer(); |
|
||||
} |
|
||||
|
|
||||
return _localizer; |
|
||||
} |
|
||||
} |
|
||||
private IStringLocalizer _localizer; |
|
||||
|
|
||||
protected Type LocalizationResource { |
|
||||
get => _localizationResource; |
|
||||
set { |
|
||||
_localizationResource = value; |
|
||||
_localizer = null; |
|
||||
} |
|
||||
} |
|
||||
private Type _localizationResource = typeof(DefaultResource); |
|
||||
|
|
||||
protected IUnitOfWork CurrentUnitOfWork => UnitOfWorkManager?.Current; |
|
||||
|
|
||||
protected ILogger Logger => LazyServiceProvider.LazyGetService<ILogger>(provider => LoggerFactory?.CreateLogger(GetType().FullName) ?? NullLogger.Instance); |
|
||||
|
|
||||
/// <summary>
|
|
||||
/// Checks for given <paramref name="policyName"/>.
|
|
||||
/// Throws <see cref="AbpAuthorizationException"/> if given policy has not been granted.
|
|
||||
/// </summary>
|
|
||||
/// <param name="policyName">The policy name. This method does nothing if given <paramref name="policyName"/> is null or empty.</param>
|
|
||||
protected virtual async Task CheckPolicyAsync([CanBeNull] string policyName) |
|
||||
{ |
|
||||
if (string.IsNullOrEmpty(policyName)) |
|
||||
{ |
|
||||
return; |
|
||||
} |
|
||||
|
|
||||
await AuthorizationService.CheckAsync(policyName); |
|
||||
} |
|
||||
|
|
||||
protected virtual IStringLocalizer CreateLocalizer() |
|
||||
{ |
|
||||
if (LocalizationResource != null) |
|
||||
{ |
|
||||
return StringLocalizerFactory.Create(LocalizationResource); |
|
||||
} |
|
||||
|
|
||||
var localizer = StringLocalizerFactory.CreateDefaultOrNull(); |
|
||||
if (localizer == null) |
|
||||
{ |
|
||||
throw new AbpException($"Set {nameof(LocalizationResource)} or define the default localization resource type (by configuring the {nameof(AbpLocalizationOptions)}.{nameof(AbpLocalizationOptions.DefaultResourceType)}) to be able to use the {nameof(L)} object!"); |
|
||||
} |
|
||||
|
|
||||
return localizer; |
|
||||
} |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
namespace Volo.Abp.Application.Services; |
|
||||
|
|
||||
[IntegrationService] |
|
||||
public abstract class IntegrationService : ApplicationServiceBase |
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
Loading…
Reference in new issue