Refactor UserManager dependency injection setup

Umbenennung der Methoden für mehr Klarheit: `AddUserManager` zu `AddUserManagerApplication` und `AddInfrastructureServices` zu `AddUserManagerInfrastructure`. Neue Projektreferenzen für `Application`, `Domain` und `Infrastructure` in der `DigitalData.UserManager.DependencyInjection.csproj` hinzugefügt. Einführung von Erweiterungsmethoden in `Extensions.cs`, um die Registrierung von UserManager-Diensten zu rationalisieren und die Kohärenz zwischen Infrastruktur- und Anwendungsdienstregistrierungen zu verbessern.
This commit is contained in:
Developer 02 2025-04-16 11:42:48 +02:00
parent ac064f4671
commit 52871f006d
4 changed files with 45 additions and 6 deletions

View File

@ -16,7 +16,7 @@ namespace DigitalData.UserManager.Application
/// <typeparam name="TDbContext">The type of the DbContext to use for the repositories.</typeparam>
/// <param name="services">The IServiceCollection to which the services will be added.</param>
/// <returns>The updated IServiceCollection.</returns>
public static IServiceCollection AddUserManager(this IServiceCollection services)
public static IServiceCollection AddUserManagerApplication(this IServiceCollection services)
=> services
.AddAutoMapper(typeof(UserMappingProfile).Assembly)
.AddAutoMapper(typeof(GroupMappingProfile).Assembly)

View File

@ -18,4 +18,10 @@
<FileVersion>1.0.0</FileVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\DigitalData.UserManager.Application\DigitalData.UserManager.Application.csproj" />
<ProjectReference Include="..\DigitalData.UserManager.Domain\DigitalData.UserManager.Domain.csproj" />
<ProjectReference Include="..\DigitalData.UserManager.Infrastructure\DigitalData.UserManager.Infrastructure.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,33 @@
using DigitalData.UserManager.Application;
using DigitalData.UserManager.Infrastructure;
using DigitalData.UserManager.Infrastructure.Contracts;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
namespace DigitalData.UserManager.DependencyInjection;
public static class Extensions
{
public static IServiceCollection AddUserManager<TDbContext>(this IServiceCollection services)
where TDbContext : DbContext, IUserManagerDbContext
{
services.AddUserManagerInfrastructure<TDbContext>();
services.AddUserManagerApplication();
return services;
}
public static IServiceCollection AddUserManager(this IServiceCollection services, Action<DbContextOptionsBuilder> optionsAction)
{
services.AddUserManagerInfrastructure(optionsAction);
services.AddUserManagerApplication();
return services;
}
public static IServiceCollection AddUserManager<TDbContext>(this IServiceCollection services, string connectionString)
where TDbContext : DbContext, IUserManagerDbContext
{
services.AddUserManagerInfrastructure(connectionString);
services.AddUserManagerApplication();
return services;
}
}

View File

@ -16,7 +16,7 @@ public static class DependencyInjection
/// <typeparam name="TDbContext">The type of the DbContext to use for the repositories.</typeparam>
/// <param name="services">The IServiceCollection to which the services will be added.</param>
/// <returns>The updated IServiceCollection.</returns>
public static IServiceCollection AddInfrastructureServices<TDbContext>(this IServiceCollection services)
public static IServiceCollection AddUserManagerInfrastructure<TDbContext>(this IServiceCollection services)
where TDbContext : DbContext, IUserManagerDbContext
{
return services
@ -36,9 +36,9 @@ public static class DependencyInjection
/// <param name="services">The <see cref="IServiceCollection"/> to which the services will be added.</param>
/// <param name="optionsAction">An <see cref="Action{T}"/> to configure the <see cref="DbContextOptionsBuilder"/>.</param>
/// <returns>The updated <see cref="IServiceCollection"/>.</returns>
public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, Action<DbContextOptionsBuilder> optionsAction) => services
public static IServiceCollection AddUserManagerInfrastructure(this IServiceCollection services, Action<DbContextOptionsBuilder> optionsAction) => services
.AddDbContext<UserManagerDbContext>(optionsAction)
.AddInfrastructureServices<UserManagerDbContext>();
.AddUserManagerInfrastructure<UserManagerDbContext>();
/// <summary>
/// Adds the UserManager services and repositories to the specified <see cref="IServiceCollection"/>.
@ -46,6 +46,6 @@ public static class DependencyInjection
/// </summary>
/// <param name="services">The IServiceCollection to which the services will be added.</param>
/// <returns>The updated IServiceCollection.</returns>
public static IServiceCollection AddInfrastructureServices(this IServiceCollection services, string connectionString) => services
.AddInfrastructureServices(options => options.UseSqlServer(connectionString).EnableSensitiveDataLogging());
public static IServiceCollection AddUserManagerInfrastructure(this IServiceCollection services, string connectionString) => services
.AddUserManagerInfrastructure(options => options.UseSqlServer(connectionString).EnableSensitiveDataLogging());
}