c# - 可以在我的 Azure Function 中使用静态 Simple Injector DI 容器吗?
问题描述
我有一个 Simple Injector DI Container,它有助于实例化我的函数所需的各种依赖项。我知道静态变量在 Azure Functions 中有特殊处理,我想确保我做对了。下面是我的代码。这个对吗?
public static class DeviceDataFunction
{
public static Container Container = SimpleInjectionInitializer.Initialize();
[FunctionName("DeviceDataFunction")]
public static void Run([ServiceBusTrigger("devicedatatopic", "devicedatasubscription", AccessRights.Manage, Connection = @"ConnectionStringKey")]string data, Microsoft.Extensions.Logging.ILogger log)
{
var logger = new ILoggerAdapter(log);
logger.Info($"DeviceDataFunction ServiceBus topic trigger function processed message: {data}");
try
{
var DeviceDataService = new DeviceDataHelper(logger,
Container.GetInstance<IDeviceDataProvider>(),
Container.GetInstance<IDeviceProvider>(),
Container.GetInstance<IDeviceAlarmProvider>(),
Container.GetInstance<IAlarmTopicHandler>(),
Container.GetInstance<ICacheClient>());
DeviceDataService.Process(data);
}
catch(Exception ex)
{
var message = (ex.InnerException != null) ? ex.Message + "\n" + ex.InnerException.Message : ex.Message;
message += (ex.InnerException != null) ? ex.StackTrace + "\n" + ex.InnerException.StackTrace : ex.StackTrace;
logger.Error(message);
throw;
}
}
}
解决方案
它看起来在技术上是正确的。
Azure Functions 对静态没有任何特殊处理,只是因为函数始终是静态的,所以您必须使用静态初始化程序。
推荐阅读
- excel - 如何根据标准排名并考虑重复值
- java - java - 在java中的selenium中查找元素列表时如何实现对webdriver.findElements()的隐式等待?
- android - 我们如何在 kotlin 中使用自定义字体创建 TextView 的自定义类?
- google-cloud-storage - 允许用户从浏览器上传文件到谷歌云存储
- java - 如何从url中获取一串字符
- python-3.x - 混合精度训练报告RET_CHECK失败,ShapeUtil::Equal(first_reduce->shape(), inst->shape())
- apache - Apache Config 代理 SSL
- python-3.x - 如何在读取文件路径时使用变量?
- neo4j - Neo4j.rb : 用户有很多共同朋友的朋友的朋友
- reactjs - 如何将 jsconfig.json 添加到现有的 vscode 项目而不破坏它