diff --git a/src/ReC.Application/DependencyInjection.cs b/src/ReC.Application/DependencyInjection.cs index eab149e..070a261 100644 --- a/src/ReC.Application/DependencyInjection.cs +++ b/src/ReC.Application/DependencyInjection.cs @@ -1,4 +1,6 @@ -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using ReC.Application.Common.Options; using System.Reflection; namespace ReC.Application; @@ -9,6 +11,7 @@ public static class DependencyInjection { var configOpt = new ConfigurationOptions(); options.Invoke(configOpt); + configOpt.ApplyConfigurations(services); services.AddAutoMapper(cfg => { @@ -29,6 +32,29 @@ public static class DependencyInjection public class ConfigurationOptions { + private readonly Queue> _configActions = new(); + + internal void ApplyConfigurations(IServiceCollection services) + { + while (_configActions.Count > 0) + { + var action = _configActions.Dequeue(); + action(services); + } + } + public string? LuckyPennySoftwareLicenseKey { get; set; } + + public ConfigurationOptions ConfigureRecActions(Action configure) + { + _configActions.Enqueue(services => services.Configure(configure)); + return this; + } + + public ConfigurationOptions ConfigureRecActions(IConfiguration configuration) + { + _configActions.Enqueue(services => services.Configure(configuration)); + return this; + } } }