我假设你想从web应用程序访问appsettings.json
文件,因为默认情况下类库没有appsettings.json
。
我创建了一个模型类,其属性与appsettings.json
中的某个部分中的设置相匹配。
在appsettings.json节
"ApplicationSettings": {
"SmtpHost": "mydomain.smtp.com",
"EmailRecipients": "[email protected];[email protected]"
}
匹配模型类
namespace MyApp.Models
{
public class AppSettingsModel
{
public string SmtpHost { get; set; }
public string EmailRecipients { get; set; }
}
}
然后填充该模型类,它在DI容器添加到收藏IOptions
(这样做在Startup类的Configure()
方法中)。
services.Configure<AppSettingsModel>(Configuration.GetSection("ApplicationSettings"));
// Other configuration stuff
services.AddOptions();
然后你可以从该框架通过将其作为构造函数的参数调用任何方法访问类。该框架处理查找并将该类提供给构造函数。
public class MyController: Controller
{
private IOptions<AppSettingsModel> settings;
public MyController(IOptions<AppSettingsModel> settings)
{
this.settings = settings;
}
}
然后,当类库中的方法需要设置时,我要么单独传递设置,要么传递整个对象。
[在C#类库中使用IConfiguration]的可能重复(https://stackoverflow.com/questions/27880433/using-iconfiguration-in-c-sharp-class-library) –
[使用C#类库中的IConfiguration](https://stackoverflow.com/q/27880433/1647238),请参阅[我的回答](https://stackoverflow.com/a/47645131/1647238) –