Azure 函数中的 Autofac 依赖注入

Autofac Dependency Injection in Azure Function

我正在尝试在 Azure 函数中使用 Autofac IOC 实现 DI。 我需要构建容器,但不确定将构建容器的代码放在哪里

Azure Functions 尚不支持依赖注入。关注此问题以获取功能请求 https://github.com/Azure/Azure-Functions/issues/299

我想现在你需要做一些丑陋的事情,比如:

public static string MyAwesomeFunction(string message)
{
    if (MyService == null)
    {
        var instantiator = Initialize();
        MyService = instantiator.Resolve<IService>();
    }

    return MyService.Hello(message);
}

private static IService MyService = null;

private static IContainer Initialize()
{
    // Do your IoC magic here
}

虽然 Azure Functions 不支持开箱即用的 DI,但可以通过新的扩展 API 添加它。您可以使用 IExtensionConfigProvider 实现注册容器。您可以在此处 https://blog.wille-zone.de/post/azure-functions-proper-dependency-injection/.

找到 Azure 中的完整示例 DI 解决方案

您可以使用自定义 [inject] 属性来完成。请参阅此处的示例 https://blog.wille-zone.de/post/azure-functions-proper-dependency-injection/

我确实写了一篇关于在 Azure Functions 中使用 Autofac 进行依赖注入的博客条目。看看这里: Azure Function Dependency Injection with AutoFac: Autofac on Functions

它遵循与 Boris Wilhelms 类似的方法。 另一个基于鲍里斯方法的实现可以在 github 上找到:autofac dependency injection

-- 更新 ---

使用 Azure Function v2 可以创建基于 .net 标准的 nuget 包。看看 Azure Functions Dependency Injection with Autofac: Autofac on Functions nuget Package

我对主要问题写了一个不同的答案,有不同的解决方案,完全与主要问题相关。

以前的解决方案是手动初始化 DI 或使用装饰器方式进行初始化。我的想法是将 DI 与 Functions Builder 联系起来,就像我们使用 aspnet 一样,没有装饰器。

我不知道为什么我的 post 被@MartinPieters 删除了,好像根本就没人看。

我没有办法正式反对这个决定,所以我恳请版主再次阅读我的回答并取消删除。