繁体   English   中英

如何在另一个项目或类库中使用 appsettings.json

[英]How to use appsettings.json in another project or class library

我在 appsettings.json 中有一个要在另一个项目中使用的属性,例如,我有 API 项目和一个类库,在 API 项目中我有 appsettings.json,在类库中我有一个类我需要在其中使用该appsettings.json的属性。

现在我所拥有的是以下

启动.cs

 services.Configure<AppConfiguration>(Configuration)
                .AddSingleton(sp => sp.GetRequiredService<IOptions<AppConfiguration>>().Value);

应用配置.cs

public class AppConfiguration
    {
        public string SecretKey { get; set; }
    }

用户逻辑.cs

这是位于类库中的类

 public class UserLogic
    {
        private static AppConfiguration _settings { get; set; }

        public UserLogic(AppConfiguration settings)
        {
            _settings = settings;
        }

        public static string AuthenticateUser(UserCredentials credentials)
        {
            return _settings.SecretKey;
        }
    }

代码是测试,因为我正在测试,但我想做的是在这个类中使用那个 SecretKey 但不必创建它的实例,这就是静态方法的原因,问题是当我访问方法时这样UserLogic.AuthenticateUser(null)并向我发送一个对象引用,因为 _settings 变量没有被设置

尝试注入IOptions<AppConfiguration>并从中获取Value属性,该属性应该是代表您的应用程序设置配置的对象 - 这当然假设appSettings.json本身已正确命名/格式化以匹配您的配置类AppConfiguration的结构。

如下:

public class UserLogic
{
    private static AppConfiguration _settings { get; set; }
    
    static UserLogic(IOptions<AppConfiguration> appConfigurationOptions)
    {
        // just in case called with null value, handle validation.
        if(appConfigurationOptions == null)
         {
             throw new ArgumentNullException(nameof(appConfigurationOptions));
         }
    
         _settings = appConfigurationOptions.Value;
     }
    
     public static string AuthenticateUser(UserCredentials credentials)
     {
           return _settings.SecretKey;
     }
}

话虽如此,添加appSettings.json的结构也会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM