.net 7 web api, MediatoR 12, FluentValidation & OneOf, не могу сообразить как сделать PipelineBehavior, чтобы из него не надо было кидать исключение, если запрос не прошел проверку в пайплайне, а можно было вернуть OneOf, где в ApiError будут лежать ошибки валидации.
Wrappers:
public interface IMyRequest<TResponse> : IRequest<OneOf<ApiError, TResponse>>
{
}
public interface IMyRequestHandler<TRequest, TResponse> : IRequestHandler<TRequest, OneOf<ApiError, TResponse>>
where TRequest : IMyRequest<TResponse>
{
}
Pipeline:
internal sealed class ValidationBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
where TRequest : IRequest<TResponse>
where TResponse : IOneOf, new()
Но таким образом никак нельзя вернуть OneOf, упорно пытается сказать, что не может преобразовать OneOf в TResponse:
return OneOf<ApiError, TResponse>.FromT0(new ApiError { Text = "Test" });
Как можно победить это всё? Сделать 1 общий объект, в котором будет лежать и результат, и ошибки (если нет, то null, null не отдавать клиенту в json'e)? Но хотелось бы иметь функционал как у OneOf, чтобы метчить результаты на IActionResult (изобретать свой велосипед?).