Используя ядро, вы можете вручную зарегистрировать ваши обработчики и использовать любую область видимости, какую захотите. Так, например:
services.AddScoped<IPipelineBehavior<MyCommand>, MyHandler>();
На самом деле мы оборачиваем Mediatr, чтобы мы могли добавлять различные биты и бобы, чтобы в итоге это было расширение регистрации, как это (CommandContect / QueryContext содержит различные вещи, которые мы используем все время, а ExecutionResponse - это стандартный ответ, поэтому у нас могут быть стандартные post обработчики, которые знают, что они получают):
public static IServiceCollection AddCommandHandler<THandler, TCommand>(this IServiceCollection services)
where THandler : class, IPipelineBehavior<CommandContext<TCommand>, ExecutionResponse>
where TCommand : ICommand
{
services.AddScoped<IPipelineBehavior<CommandContext<TCommand>, ExecutionResponse>, THandler>();
return services;
}
, который используется так:
services.AddCommandHandler<MyHandler, MyCommand>();
У нас есть аналогично для запросов (AddQueryHandler <.....) </p>
Надеюсь, это поможет