Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
using Cnblogs.Architecture.Ddd.Cqrs.DependencyInjection;
using MediatR;
Expand All @@ -18,6 +18,21 @@ public static class ServiceCollectionInjector
/// <param name="assemblies">命令/查询所在的程序集。</param>
/// <returns></returns>
public static CqrsInjector AddCqrs(this IServiceCollection services, params Assembly[] assemblies)
{
return services.AddCqrs(null, assemblies);
}

/// <summary>
/// 添加 Cqrs 支持。
/// </summary>
/// <param name="services"><see cref="IServiceCollection" />。</param>
/// <param name="configuration">The action used to configure the MediatRServiceConfiguration.</param>
/// <param name="assemblies">命令/查询所在的程序集。</param>
/// <returns></returns>
public static CqrsInjector AddCqrs(
this IServiceCollection services,
Action<MediatRServiceConfiguration>? configuration,
params Assembly[] assemblies)
{
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(ValidationBehavior<,>));
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(LoggingBehavior<,>));
Expand All @@ -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);
}
}
Loading