[英]How do you inject in dotnet core project in static method an IConfiguration object?
我有一家 Redis 商店与这家类似。 我的问题是,因为我使用的是 .Net Core,在第 15 行,我应该使用我通常在构造函数中注入的配置 object。
但是,不能在 static 构造函数中注入配置 object,因为 static 构造函数在 C# 中应该是无参数的。
我尝试添加一个 static 方法来初始化配置 object,但随后构造函数抛出NullReferenceException
,因为显然在 Init 方法之前仍然首先调用 ctor,并且它需要配置 object...那该怎么办?
似乎不是一个好的解决方法。
与其使用静态进行所有工作并尝试让它工作(提示:它永远不会使用 static 构造函数),我建议您转向更新的模式并正确使用 DI。
如果您真的不需要懒惰,这就像注入IConnectionMultiplexer
一样简单:
services.AddScoped<IConnectionMultiplexer>(s => ConnectionMultiplexer.Connect(configuration["someSettings"]));
如果你确实需要懒惰:
// public interface IRedisStore { IConnectionMultiplexer RedisConnection { get; } }
public class RedisStore : IRedisStore
{
private readonly Lazy<ConnectionMultiplexer> LazyConnection;
public RedisStore(IConfiguration configuration)
{
var configurationOptions = new ConfigurationOptions
{
EndPoints = { configuration["someSettings"] }
};
LazyConnection = new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect(configurationOptions));
}
public IConnectionMultiplexer RedisConnection => LazyConnection.Value;
}
你会注入它:
services.AddScoped<IRedisStore, RedisStore>());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.