diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj b/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj index d1168a2f17..5ce18bc7f0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo.Abp.AspNetCore.Components.csproj @@ -15,7 +15,7 @@ - + diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs index 9f45ee2b8a..e125ee5f8d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpAspNetCoreComponentsModule.cs @@ -3,9 +3,13 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Components.DependencyInjection; using Volo.Abp.DynamicProxy; using Volo.Abp.Modularity; +using Volo.Abp.ObjectMapping; namespace Volo.Abp.AspNetCore.Components { + [DependsOn( + typeof(AbpObjectMappingModule) + )] public class AbpAspNetCoreComponentsModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs new file mode 100644 index 0000000000..94b61cdc66 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs @@ -0,0 +1,48 @@ +using System; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.ObjectMapping; + +namespace Volo.Abp.AspNetCore.Components +{ + public class AbpComponentBase : OwningComponentBase + { + //TODO: IStringLocalizer, CurrentUser, Logger, AuthorizationService + + protected IObjectMapper ObjectMapper + { + get + { + if (_objectMapper != null) + { + return _objectMapper; + } + + if (ObjectMapperContext == null) + { + return LazyGetRequiredService(ref _objectMapper); + } + + return LazyGetRequiredService( + typeof(IObjectMapper<>).MakeGenericType(ObjectMapperContext), + ref _objectMapper + ); + } + } + + private IObjectMapper _objectMapper; + protected Type ObjectMapperContext { get; set; } + + protected TService LazyGetRequiredService(ref TService reference) => LazyGetRequiredService(typeof(TService), ref reference); + + protected TRef LazyGetRequiredService(Type serviceType, ref TRef reference) + { + if (reference == null) + { + reference = (TRef)ScopedServices.GetRequiredService(serviceType); + } + + return reference; + } + } +} diff --git a/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs b/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs index 315cc42a73..5154c88cd1 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs @@ -12,6 +12,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Localization; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Abp.AspNetCore.Components; using Volo.Abp.AspNetCore.Components.WebAssembly; using Volo.Abp.Authorization; using Volo.Abp.ObjectMapping; @@ -151,7 +152,7 @@ namespace Volo.Abp.BlazoriseUI TListViewModel, TCreateViewModel, TUpdateViewModel> - : OwningComponentBase + : AbpComponentBase where TAppService : ICrudAppService< TGetOutputDto, TGetListOutputDto, @@ -195,44 +196,6 @@ namespace Volo.Abp.BlazoriseUI public bool HasUpdatePermission { get; set; } public bool HasDeletePermission { get; set; } - protected Type ObjectMapperContext { get; set; } - - protected IObjectMapper ObjectMapper - { - get - { - if (_objectMapper != null) - { - return _objectMapper; - } - - if (ObjectMapperContext == null) - { - return LazyGetRequiredService(ref _objectMapper); - } - - return LazyGetRequiredService( - typeof(IObjectMapper<>).MakeGenericType(ObjectMapperContext), - ref _objectMapper - ); - } - } - - private IObjectMapper _objectMapper; - - protected TService LazyGetRequiredService(ref TService reference) - => LazyGetRequiredService(typeof(TService), ref reference); - - protected TRef LazyGetRequiredService(Type serviceType, ref TRef reference) - { - if (reference == null) - { - reference = (TRef)ScopedServices.GetRequiredService(serviceType); - } - - return reference; - } - protected AbpCrudPageBase() { NewEntity = new TCreateViewModel(); @@ -297,7 +260,7 @@ namespace Volo.Abp.BlazoriseUI { limitedResultRequestInput.MaxResultCount = PageSize; } - + return Task.CompletedTask; }