我正在尝试使用Azure功能中的Autofac IOC实现DI。 我需要构建容器,但不确定将代码放在何处构建容器
答案 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删除了我的帖子,看来它甚至没有被阅读。
我找不到正式不同意该决定的方法,因此,我恳请主持人再次阅读我的回答并取消删除它。