2

我们正在使用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());
4

0 回答 0