Dependency injection 如何为依赖项注入配置IConfigurationRoot和Microsoft.Azure.WebJobs.ExecutionContext?

Dependency injection 如何为依赖项注入配置IConfigurationRoot和Microsoft.Azure.WebJobs.ExecutionContext?,dependency-injection,azure-functions,Dependency Injection,Azure Functions,我有一个Azure功能应用程序。我希望我的代码能够访问为Azure功能应用程序配置的设置。我正在使用Microsoft.Extensions.DependencyInjection进行依赖项注入 要访问配置数据,我使用以下代码: [FunctionName("MyEndpoint")] public static Task<IActionResult> MyFuncAsync(ExecutionContext context) { IConfigurationRoo

我有一个Azure功能应用程序。我希望我的代码能够访问为Azure功能应用程序配置的设置。我正在使用Microsoft.Extensions.DependencyInjection进行依赖项注入

要访问配置数据,我使用以下代码:

[FunctionName("MyEndpoint")]
public static Task<IActionResult> MyFuncAsync(ExecutionContext context)
        {
 IConfigurationRoot config = new ConfigurationBuilder()
                .SetBasePath(context.FunctionAppDirectory)
                .AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables()
                .Build();
}

使用静态构造函数,在其中设置所有配置和服务集合。然后在函数本身中使用它们。理想情况下,您不应该将配置根注入任何内容。这可能表明您的设计和关注点分离存在更深层次的问题。@Nkosi我看不出这有什么设计问题。如果你愿意进一步解释,我愿意听。我在我的所有应用程序中都使用接口来拉取设置。我实现了基于应用程序环境的具体类——Asp.Net、WinForms和Azure函数。我的接口允许我访问配置数据,而不用担心环境的细节。我的代码是可重用和可移植的。在本例中,我的具体类依赖于ExecutionContext。这与Azure函数略有不同,因为它们的静态特性不适合DI。至于我提到的设计问题,
IConfigurationRoot
虽然是一个接口,但却是一个特定于.net core的实现问题。您能否提供有关要调用的函数以及如何使用/调用依赖类的更多上下文。请使用静态构造函数,在其中设置所有配置和服务集合。然后在函数本身中使用它们。理想情况下,您不应该将配置根注入任何内容。这可能表明您的设计和关注点分离存在更深层次的问题。@Nkosi我看不出这有什么设计问题。如果你愿意进一步解释,我愿意听。我在我的所有应用程序中都使用接口来拉取设置。我实现了基于应用程序环境的具体类——Asp.Net、WinForms和Azure函数。我的接口允许我访问配置数据,而不用担心环境的细节。我的代码是可重用和可移植的。在本例中,我的具体类依赖于ExecutionContext。这与Azure函数略有不同,因为它们的静态特性不适合DI。至于我提到的设计问题,
IConfigurationRoot
虽然是一个接口,但却是一个特定于.net core的实现问题。您能否提供有关要调用的函数以及如何使用/调用依赖类的更多上下文。
public class MyWorkerClass(IConfigurationRoot config) 
{
...
}