【发布时间】:2020-08-17 07:17:50
【问题描述】:
我的 Azure Function 中有一个 redisprovider 类:
public RedisCacheProvider(ILogger<RedisCacheProvider> logger,
IConnectionMultiplexer connectionMultiplexer)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
multiplexer = connectionMultiplexer;
}
我将这个类添加为单例,但是如何在启动类中初始化 Ilogger。我知道它是由 Azure Functions 注入到类中的。如果是这样,当我们需要在启动时为该类初始化其他对象时,如何在启动类中进行管理?
services.AddSingleton<ICacheProvider>(serviceProvider =>
new RedisCacheProvider(**???**, serviceProvider.GetRequiredService<IConnectionMultiplexer>()));
通常,我会这样做:
services.AddSingleton<IHttpService, HttpService>();
在 RedisProvider 类中,我需要传递我的连接字符串。那么当我通过 IConnectionMultiplexer 时如何注入 ILogger 呢?
【问题讨论】:
-
要提供 一些 参数,而将其余参数留给容器,我们可以使用
ActivatorUtilities.CreateInstance<T>(serviceProvider, customParam1, customParam2, ...)。如果我们希望经常这样做,我们可以使用ActivatorUtilities.CreateFactory(type, customParam1, customParam2, ...)编译一个高效、可重用的工厂。
标签: c# .net-core azure-functions stackexchange.redis