From 55798353cad15840a365c8273b45664dbf73f978 Mon Sep 17 00:00:00 2001 From: dudu Date: Tue, 7 Oct 2025 10:31:25 +0800 Subject: [PATCH] refactor: introduce MediatR configuration parameter to AddCqrs --- .../ServiceCollectionInjector.cs | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection/ServiceCollectionInjector.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection/ServiceCollectionInjector.cs index 64b92af..a10a230 100644 --- a/src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection/ServiceCollectionInjector.cs +++ b/src/Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection/ServiceCollectionInjector.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using Cnblogs.Architecture.Ddd.Cqrs.Abstractions; using Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection; using MediatR; @@ -18,6 +18,21 @@ public static class ServiceCollectionInjector /// 命令/查询所在的程序集。 /// public static CqrsInjector AddCqrs(this IServiceCollection services, params Assembly[] assemblies) + { + return services.AddCqrs(null, assemblies); + } + + /// + /// 添加 Cqrs 支持。 + /// + /// 。 + /// The action used to configure the MediatRServiceConfiguration. + /// 命令/查询所在的程序集。 + /// + public static CqrsInjector AddCqrs( + this IServiceCollection services, + Action? configuration, + params Assembly[] assemblies) { services.AddTransient(typeof(IPipelineBehavior<,>), typeof(ValidationBehavior<,>)); services.AddTransient(typeof(IPipelineBehavior<,>), typeof(LoggingBehavior<,>)); @@ -27,7 +42,12 @@ public static CqrsInjector AddCqrs(this IServiceCollection services, params Asse assemblies = [typeof(CqrsInjector).Assembly]; } - services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblies(assemblies)); + services.AddMediatR(cfg => + { + cfg.RegisterServicesFromAssemblies(assemblies); + configuration?.Invoke(cfg); + }); + return new CqrsInjector(services); } }