Sha*_*eKm 3 .net-core asp.net-core
我想在我的应用程序中使用以下 Singleton 类:
public sealed class AppSettings
{
    private static readonly Lazy<AppSettings> _lazy =
        new Lazy<AppSettings>(() => new AppSettings());
    private AppSettings()
    {
        // I want to inject this
        var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile($"appsettings.json", optional: true, reloadOnChange: true);
        Config = builder.Build();
    }
    public static AppSettings Instance => _lazy.Value;
    public IConfigurationRoot Config { get; }
}
Run Code Online (Sandbox Code Playgroud)
我想注入 IConfiguration 而不是将其构建在其中。我怎样才能做到这一点?
您不需要创建自己的单例类。相反,创建一个普通的类并将其作为单例注册/添加到 DI 容器中:
public sealed class AppSettings
{
    private IConfiguration _configuration;
    public AppSettings(IConfiguration configuration)
    {
        _configuration = configuration;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)
然后在ConfigureServices方法中使用
// IConfigurationRoot ConfigureServices;
services.AddSingleton(new AppSettings(Configuration));
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           7829 次  |  
        
|   最近记录:  |