我正在使用 StackExchange.Redis 从.NET Core连接到Redis服务器。如何将单例 IConnectionMultiplexer
注入到另一个单例服务中?
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSingleton<IConnectionMultiplexer>(ConnectionMultiplexer.Connect(GetRedisConnectionString()));
services.AddSingleton<IMyService>(new MyService(new DbContext(optionsBuilder.Options)), ???);
...
}
MyService.cs
private DbContext _dbContext;
private IConnectionMultiplexer _redis;
public MyService(DbContext dbContext, IConnectionMultiplexer redis)
{
_dbContext = fitDBContext;
_redis = redis;
}
在
ConfigureServices
中,我需要用什么代替???
?还有其他方法吗?
StackExchange.Redis
建议(链接)我们保存ConnectionMultiplexer.Connect(...)
调用的返回值并重复使用它。因此,我为此创建了一个单例服务(它基于另一个StackOverFlow问题),可以进行注入,但我注入到另一个SINGLETON服务MyService
时没有成功。
DbContext
作为IMyService
的单例会遇到问题!请参考此帖子https://dev59.com/yVYM5IYBdhLWcg3wfQMa#48783504 - alsamiIConnectionMultiplexer
需要是单例的。IMyService
不需要是单例的。容器将会持有该实例。 - Nkosi