Я закончил читать документацию «Фильтры в приложениях с минимальным API», но она недостаточно понятна.
Внедрение зависимостей (DI), как показано в предыдущем коде. Хотя фильтры могут разрешать зависимости от DI, сами фильтры не могут быть разрешены от DI.
Какой из них нам следует использовать? Версия 1 или версия 2?
// version 1: Manually resolve from context
private sealed class TodoValidationFilter : IEndpointFilter
{
public async ValueTask InvokeAsync(
EndpointFilterInvocationContext context,
EndpointFilterDelegate next)
{
var ct = context.HttpContext.RequestAborted;
using var scope = context.HttpContext.RequestServices.CreateScope();
var db = scope.ServiceProvider.GetRequiredService();
var input = context.Arguments.OfType().First();
return await next(context);
}
}
< /code>
// Version 2: Constructor injection
private sealed class TodoValidationFilter(AppDbContext db) : IEndpointFilter
{
public async ValueTask InvokeAsync(
EndpointFilterInvocationContext context,
EndpointFilterDelegate next)
{
var ct = context.HttpContext.RequestAborted;
var input = context.Arguments.OfType().First();
return await next(context);
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... iendpointf