Как правильный способ получить AppDBContext из класса, реализующей iendpointfilter?C#

Место общения программистов C#
Ответить
Anonymous
 Как правильный способ получить AppDBContext из класса, реализующей iendpointfilter?

Сообщение Anonymous »

Я закончил читать документацию «Фильтры в приложениях с минимальным 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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