我可以在 C# 中创建非静态 Azure 函数类,有什么后果?

Sha*_*dra 4 azure static-classes azure-functions azure-function-app

Azure 函数中的构造函数注入和自定义遥测事件的集合需要此非静态类。

如果我们在 Visual Studio 中创建一个 azure 函数应用程序,它会使用 static 关键字创建默认值,如下所示:

public static async Task<IActionResult> Run(
                [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
                ILogger log)
{
     telemetryClient.TrackEvent(new Exception("Function started"));
}
Run Code Online (Sandbox Code Playgroud)

但是要使用构造函数依赖注入(对于 Temeltry 客户端,我正在使用它),我们需要删除 static 关键字。

public Function1(TelemetryClient telemetryClient)
        {
            _telemetryClient = telemetryClient;
        }
Run Code Online (Sandbox Code Playgroud)

Iva*_*ang 7

以前,Azure 函数仅支持静态类/方法。这会导致一些问题,例如通过构造函数进行 DI 是不可能的。所以这个问题Support Instance Functions被提出来了。

因此,如果您需要通过构造函数使用 DI,只需将其更改为非静态即可。没有后果。