我们正在使用MediatR
,我想在可以发生IMediator.Send
一些丰富的地方进行包装。TRequest
public class RequestBase
{
public User User { get; set; }
}
public class RequestBaseImpl : RequestBase, IRequest<SomeResponse>
{
}
public class HandlerBase
{
private IMediator _mediator;
public TReturn Send<T, TReturn>(T request) where T : RequestBase, IRequest<TReturn>
{
request.User = new User();
return _mediator.Send(request);
}
}
问题在于,使用此实现,我必须在调用 Send 方法时完全键入 TRequest/TResponse 类型。
var response = Send(new RequestBaseImpl());
给出以下编译错误:
错误 CS0411 无法从用法中推断方法“HandlerBase.Send(T)”的类型参数。尝试明确指定类型参数。
我怎样才能避免写作
var response = Send<RequestBaseImpl, SomeResponse>(new RequestBaseImpl());