创建您的 EmailSettings
强类型配置类:
- Create your
EmailSettings
strongly typed configuration class:
public class EmailSettings
{
public string HostName { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
- 更新您的 appsettings.json ,以包含一个映射到您的
EmailSettings
配置类的配置部分:
- Update your appsettings.json to include a configuration section that maps to your
EmailSettings
configuration class:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"EmailSettings": {
"HostName": "myhost.com",
"Username": "me",
"Password": "mysupersecretpassword",
}
}
- 在
Startup
类的 ConfigureServices
调用中,将 appsettings.json 绑定到您的配置类
- In the
ConfigureServices
call of your Startup
class, bind appsettings.json to your config class
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MySettings>(
options => Configuration.GetSection("EmailSettings").Bind(options));
}
- 在您的
AuthMessageSender
类中,将 IOptions< EmailSettings>
的实例注入构造函数
- In your
AuthMessageSender
class, inject an instance of IOptions<EmailSettings>
into the constructor
public class AuthMessageSender
{
private readonly EmailSettings _settings;
public AuthMessageSender(IOptions<EmailSettings> emailSettings)
{
_settings = emailSettings.Value;
// _settings.HostName == "myhost.com";
}
}
请注意,在第3步中,您还可以使用
Note that in step 3, you can also use
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MySettings>(Configuration.GetSection("EmailSettings"));
}
如果在 project.json 中添加对 Microsoft.Extensions.Options.ConfigurationExtensions 的引用:
If you add a reference to Microsoft.Extensions.Options.ConfigurationExtensions in project.json:
{
"dependencies": {
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
}
}
这篇关于ASP.NET Core Expose Config到DI注入服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!