MurabitoB

Azure Function .Net Core 開發紀錄(一)

N 人看过

Azure Function .Net Core 開發紀錄(一) 如何進行 Dependency Injection

前言

在 Visual Studio 建立新的 Azure Function 的專案的時候,預設是不會有 Dependency Inejction 的相關設定,但是可以透過安裝 nuget 套件來進行設定。

安裝套件

安裝 Microosft.Azure.Functions.Extensions 套件

設定 Startup

與 .net core API 專案的 Template 不同, Azure Function 的專案預設是不會建立 Startup ,所以需要自行建立入口的 class。

// Startup.cs
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]

namespace MyNamespace
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddSingleton<ILoggerProvider, MyLoggerProvider>();
        }
    }
}

注意事項

Azure Function 預設的 template 提供的 function 會掛 static 修飾詞,要記得拔掉,否則無法取得 DI 的物件。

參考

https://docs.microsoft.com/zh-tw/azure/azure-functions/functions-dotnet-dependency-injection