在我的应用程序(带有 NInject 的 MVC)的引导程序中,我将这两个请求绑定到我的服务:
kernel.Bind <IRequestHandler<SaveItemrequest, int>>()
.To<MyService>();
kernel.Bind <IRequestHandler<MyGetmessageRequest, List<string>>>()
.To<MyService>();
kernel.Bind<SingleInstanceFactory>().ToMethod(ctx => t => ctx.Kernel.TryGet(t));
kernel.Bind<MultiInstanceFactory>().ToMethod(ctx => t => ctx.Kernel.GetAll(t));
kernel.Bind<IMediator>().To<Mediator>();
在服务中,我有
public int Handle(SaveItemrequest req){
int id= _db.save(req.Item);
this.messages.add("OK");
return id;
}
public List<string> Handle(MyGetmessageRequest req){
return this.messages;
}
但由于 MediatR 创建了一个新实例,MyService
当我取回消息时,列表为空:
id=_mediatr.Send(_saveReq); //ok
msgs=mediatr.Send(_getMsgsreq); //always empty
有没有办法强制 MediatR 对每个请求使用相同的实例?