From 409e43460d73b7f17c885572a603a6e57d9fbb96 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Sat, 2 Aug 2025 19:29:53 +0200 Subject: [PATCH] feat(DependencyInjection): Add MediatR and configure dependency injection --- .../DependencyInjection.cs | 35 +++++++++++++++++++ .../DigitalData.ActiveDirectory.csproj | 1 + 2 files changed, 36 insertions(+) create mode 100644 src/DigitalData.ActiveDirectory/DependencyInjection.cs diff --git a/src/DigitalData.ActiveDirectory/DependencyInjection.cs b/src/DigitalData.ActiveDirectory/DependencyInjection.cs new file mode 100644 index 0000000..ce1a975 --- /dev/null +++ b/src/DigitalData.ActiveDirectory/DependencyInjection.cs @@ -0,0 +1,35 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace DigitalData.ActiveDirectory; + +public static class DependencyInjection +{ + public static IServiceCollection AddActiveDirectory(this IServiceCollection services, Action? options = null) + { + var cOptions = new ADConfigurationOptions(); + options?.Invoke(cOptions); + + services.AddMediatR(cfg => + { + cfg.RegisterServicesFromAssemblies(typeof(DependencyInjection).Assembly); + cfg.LicenseKey = cOptions.MediatRLicense; + }); + + if (cOptions.Configuration is null) + services.Configure(o => o = cOptions); + else + services.Configure(cOptions.Configuration); + + return services; + } + + public class ADConfigurationOptions : ActiveDirectoryOptions + { + internal ADConfigurationOptions() { } + + public string? MediatRLicense { get; set; } + + public IConfiguration? Configuration { get; set; } + } +} \ No newline at end of file diff --git a/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj b/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj index c421f15..26e6246 100644 --- a/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj +++ b/src/DigitalData.ActiveDirectory/DigitalData.ActiveDirectory.csproj @@ -11,6 +11,7 @@ +