gpt4 book ai didi

c# - 在为 Azure Functions 3.0 添加单例时注入(inject) ILogger

转载 作者:行者123 更新时间:2023-12-03 23:44:53 26 4
gpt4 key购买 nike

我的 Azure Function 中有一个 redisprovider 类:

        public RedisCacheProvider(ILogger<RedisCacheProvider> logger,
IConnectionMultiplexer connectionMultiplexer)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
multiplexer = connectionMultiplexer;
}
我将这个类添加为单例,但是如何在启动类中初始化 Ilogger。我知道它是由 Azure Functions 注入(inject)到类中的。如果是这样,当我们需要在启动时为类初始化其他对象时,如何在启动类中管理它?
 services.AddSingleton<ICacheProvider>(serviceProvider =>
new RedisCacheProvider(**???**, serviceProvider.GetRequiredService<IConnectionMultiplexer>()));
通常,我这样做:
services.AddSingleton<IHttpService, HttpService>();
在 RedisProvider 类中,我需要传递我的连接字符串。那么当我通过 IConnectionMultiplexer 时如何注入(inject) ILogger 呢?

最佳答案

如果我理解正确,您需要手动管理构造,因为您需要注入(inject)设置。这就提出了如何注入(inject)通常由容器管理的子依赖项的问题。
实际上,我们可以像您已经为多路复用器所做的那样获取子依赖项!

services.AddSingleton<ICacheProvider>(serviceProvider => new RedisCacheProvider(
serviceProvider.GetRequiredService<ILogger>(),
serviceProvider.GetRequiredService<IConnectionMultiplexer>()));

关于c# - 在为 Azure Functions 3.0 添加单例时注入(inject) ILogger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63446272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com