C# MediatR错误:向容器注册处理程序
我有一个.Net核心应用程序,我使用.AddMediatR扩展来注册我的命令和处理程序的程序集 在Startup.cs中的ConfigureServices中,我使用了扩展方法 从官方的一揽子计划中 MediatR.Extensions.Microsoft.DependencyInjection包含以下内容 参数: startup.csC# MediatR错误:向容器注册处理程序,c#,asp.net-core,dependency-injection,mediatr,C#,Asp.net Core,Dependency Injection,Mediatr,我有一个.Net核心应用程序,我使用.AddMediatR扩展来注册我的命令和处理程序的程序集 在Startup.cs中的ConfigureServices中,我使用了扩展方法 从官方的一揽子计划中 MediatR.Extensions.Microsoft.DependencyInjection包含以下内容 参数: startup.cs services.AddBLL(); public static IServiceCollection AddBLL(this IServiceCollec
services.AddBLL();
public static IServiceCollection AddBLL(this IServiceCollection services)
{
services.AddAutoMapper(Assembly.GetExecutingAssembly());
services.AddMediatR(Assembly.GetExecutingAssembly());
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestPerformanceBehaviour<,>));
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestValidationBehavior<,>));
return services;
}
public class ListEpostaHesaplariRequest : IRequest<ResultDataDto<List<ListEpostaHesaplariDto>>>
{
public FiltreEpostaHesaplariDto Model { get; set; }
}
public class ListEpostaHesaplariHandler : IRequestHandler<ListEpostaHesaplariRequest, ResultDataDto<List<ListEpostaHesaplariDto>>>
{
private readonly IBaseDbContext _context;
private readonly IMapper _mapper;
public ListEpostaHesaplariHandler(IBaseDbContext context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
public async Task<ResultDataDto<List<ListEpostaHesaplariDto>>> Handle(ListEpostaHesaplariRequest request, CancellationToken cancellationToken)
{
await Task.Delay(1);
var resultDataDto = new ResultDataDto<List<ListEpostaHesaplariDto>>() { Status = ResultStatus.Success };
try
{
var foo = _context.EpostaHesaplari;
var filtreliEpostaHesaplari = Filtre(request.Model, foo);
var epostaHesaplariDto = _mapper.Map<List<ListEpostaHesaplariDto>>(filtreliEpostaHesaplari);
resultDataDto.Result = epostaHesaplariDto;
}
catch (Exception ex)
{
resultDataDto.Status = ResultStatus.Error;
resultDataDto.AddError(ex.Message);
}
return resultDataDto;
}
public abstract class BaseController : Controller
{
private IMediator _mediator;
public static int? birimIDD;
protected IMediator Mediator
{
get
{
return _mediator ??= HttpContext.RequestServices.GetService<IMediator>();
}
}
}
[HttpPost]
public async Task<IActionResult> MailGonderAsync()
{
FiltreEpostaHesaplariDto filtre = new FiltreEpostaHesaplariDto();
filtre.Durum = true;
var req = new ListEpostaHesaplariRequest() { Model = filtre };
var response = await Mediator.Send(req);
}
DependencyInjection.cs
services.AddBLL();
public static IServiceCollection AddBLL(this IServiceCollection services)
{
services.AddAutoMapper(Assembly.GetExecutingAssembly());
services.AddMediatR(Assembly.GetExecutingAssembly());
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestPerformanceBehaviour<,>));
services.AddTransient(typeof(IPipelineBehavior<,>), typeof(RequestValidationBehavior<,>));
return services;
}
public class ListEpostaHesaplariRequest : IRequest<ResultDataDto<List<ListEpostaHesaplariDto>>>
{
public FiltreEpostaHesaplariDto Model { get; set; }
}
public class ListEpostaHesaplariHandler : IRequestHandler<ListEpostaHesaplariRequest, ResultDataDto<List<ListEpostaHesaplariDto>>>
{
private readonly IBaseDbContext _context;
private readonly IMapper _mapper;
public ListEpostaHesaplariHandler(IBaseDbContext context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
public async Task<ResultDataDto<List<ListEpostaHesaplariDto>>> Handle(ListEpostaHesaplariRequest request, CancellationToken cancellationToken)
{
await Task.Delay(1);
var resultDataDto = new ResultDataDto<List<ListEpostaHesaplariDto>>() { Status = ResultStatus.Success };
try
{
var foo = _context.EpostaHesaplari;
var filtreliEpostaHesaplari = Filtre(request.Model, foo);
var epostaHesaplariDto = _mapper.Map<List<ListEpostaHesaplariDto>>(filtreliEpostaHesaplari);
resultDataDto.Result = epostaHesaplariDto;
}
catch (Exception ex)
{
resultDataDto.Status = ResultStatus.Error;
resultDataDto.AddError(ex.Message);
}
return resultDataDto;
}
public abstract class BaseController : Controller
{
private IMediator _mediator;
public static int? birimIDD;
protected IMediator Mediator
{
get
{
return _mediator ??= HttpContext.RequestServices.GetService<IMediator>();
}
}
}
[HttpPost]
public async Task<IActionResult> MailGonderAsync()
{
FiltreEpostaHesaplariDto filtre = new FiltreEpostaHesaplariDto();
filtre.Durum = true;
var req = new ListEpostaHesaplariRequest() { Model = filtre };
var response = await Mediator.Send(req);
}
var response=wait_mediator.Send(req);
在send.cs var response=wait_mediator.send(req)中;此行运行时出现的错误
为类型为MediatR.IRequestHandler2[IUC.BaseApplication.BLL.Handlers.Yonetim.EpostaHesaplariHandlers.ListPostaHesAplariRequest,IUC.BaseApplication.COMMON.Models.ResultDataTo
1[System.Collections.Generic.List`1[IUC.BaseApplication.BLL.Models.Yonetim.EpostaHesaplariDto.ListHesAplaridTo]]的请求构造处理程序时出错。在容器中注册处理程序。有关示例,请参见GitHub中的示例
services.AddMediatR(Assembly.GetExecutingAssembly());
所有处理程序和命令都在您传递的程序集中