Azure函数中的Autofac依赖注入

时间:2017-06-06 18:33:22

标签: azure dependency-injection inversion-of-control autofac azure-functions

我正在尝试使用Azure功能中的Autofac IOC实现DI。 我需要构建容器,但不确定将代码放在何处构建容器

6 个答案:

答案 0 :(得分:11)

我写了一篇博客文章,用于在Azure Functions中使用Autofac进行依赖注入。看看这里: Azure Function Dependency Injection with AutoFac: Autofac on Functions

它遵循类似Boris Wilhelms之类的方法。 基于Boris'方法可以在github上找到:autofac dependency injection

- 更新---

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

答案 1 :(得分:5)

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

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
}

答案 2 :(得分:4)

虽然Azure Functions不支持开箱即用的DI,但可以通过新的Extension API添加它。您可以使用IExtensionConfigProvider实现注册容器。您可以在Azure https://blog.wille-zone.de/post/azure-functions-proper-dependency-injection/找到完整的示例DI解决方案。

答案 3 :(得分:2)

Azure Functions尚不支持依赖注入。请针对此功能请求执行此问题 https://github.com/Azure/Azure-Functions/issues/299

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我为主要问题写了一个不同的答案,有一个完全与主要问题联系在一起的解决方案。

以前的解决方案是手动初始化DI或使用装饰器来完成。我的想法是将DI绑定到函数生成器,就像使用aspnet一样,没有装饰器。

我不知道为什么@MartinPieters删除了我的帖子,看来它甚至没有被阅读。

我找不到正式不同意该决定的方法,因此,我恳请主持人再次阅读我的回答并取消删除它。