#dependency-injection #azure-functions #middleware
Вопрос:
Можно ли использовать промежуточное программное обеспечение в новейших функциях Azure (с .NET 5) для регистрации новой службы в DI, область действия которой ограничена вызовом функции?
Я хочу использовать это, чтобы я мог проверить контекст функции и добавить некоторые службы, зависящие от клиента, которые могут быть введены в конструктор класса функций.
В качестве альтернативы, могу ли я добавить службу или объект, который вводится в метод функции в качестве аргумента.
// Method injection would look like this:
public Task MyFunction(FunctionContext context, ITenantSpecificService service)
{
// service would be set in the middleware
}
Я могу вручную создать объект и добавить его в FunctionContext.Items
, но это просто не так чисто, как использование встроенной в функции системы внедрения зависимостей.
Комментарии:
1. Задумывались ли вы о создании фабрики, которая может возвращать конкретную реализацию арендатора ? В этом случае вы зарегистрируете все реализации, относящиеся к конкретному клиенту
ITenantSpecificService
, при запуске, и ваш заводской метод вернет необходимый тип по мере необходимости для каждого запроса.2. Я делал это в прошлом, но предпочел бы как можно глубже внедрить код, специфичный для клиента, в инфраструктуру.