.Net - промежуточное программное обеспечение росомахи с возвратной стоимостьюC#

Место общения программистов C#
Anonymous
.Net - промежуточное программное обеспечение росомахи с возвратной стоимостью

Сообщение Anonymous »

Я переключаюсь с Mediatr на Росоману. Это удобно использовать. Тем не менее, я столкнулся с одной проблемой. Я хочу добавить промежуточное программное обеспечение, чтобы проверить авторизацию перед использованием обработчика. Что тоже не проблема. Но проблема состоит в том, чтобы вернуть некоторый результат непосредственно из промежуточного программного обеспечения. Что обычно возможно в Mediatr (поведение).
Таким образом, вопрос в том, есть ли какой -либо элегантный способ вернуть результат непосредственно из промежуточного программного обеспечения? Если я не ошибаюсь, можно вернуть результат промежуточного программного обеспечения в качестве параметра обработчика, но это кажется мне крайне неприглядным. Затем мне нужно было бы проверить каждый обработчик, если он содержит что -то и т. Д. И другие проблемы. Я буду использовать эту логику в других местах, кроме WebAPI. < /P>
outputDto < /p>

Код: Выделить всё

public class OutputDto
{
public bool Valid { get; set; }
}
< /code>
myhandler < /p>
public class MyHandler
{
public Task Handle(InputDto input)
{
return Task.FromResult(new OutputDto() { Valid = true });
}
}
< /code>
mymiddleware < /p>
public class MyMiddleware
{
public async Task BeforeAsync(InputDto input)
{
return (HandlerContinuation.Stop, new OutputDto() { Valid = false });
}
}
< /code>
контроллер - Действие вызывает промежуточное программное обеспечение и возвращает NULL < /p>
private readonly IMessageBus _bus;

public WeatherForecastController(IMessageBus bus)
{
_bus = bus;
}

[HttpGet(Name = "GetWeatherForecast")]
public async Task Get()
{
var a = await _bus.InvokeAsync(new InputDto { Id = 5 });

return a;
}
< /code>
Регистрация < /p>
builder.UseWolverine(options =>
{
options.Policies.AddMiddleware();
});
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/796 ... turn-value

Вернуться в «C#»