[英]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.