В .NET Core, как читать из appsetting.json и присваивать значение объекту в методе setter

#.net-core

#.net-core

Вопрос:

У меня есть конфигурация электронной почты SendGrid в appsettings.json, которую мне нужно инициализировать в startup.cs, у меня есть define class EmailConfig, где я хочу присвоить значения из appsettings.json, чтобы я мог использовать else where.

appsetting.json

 "SendGridEmailSettings": {
    "SendGrid_API_Key": "MY-Key-XYZ",
    "From": "info@organisation.ltd"
  

}

Класс EmailConfig

   public class EmailConfig : IEmailConfig
{
    public string API_Key { get; set; }
    public string From { get; set; }
}
  

В моем основном классе мне нужно прочитать это значение как

 public mailConfig emailConfig { get; set; } 
  

Ответ №1:

Я бы сначала переименовал поля EmailConfig в соответствии с настройками:

 public class EmailConfig
{
    public string SendGrid_API_Key { get; set; }
    public string From { get; set; }
}
  

В методе ConfigureServices в вашем startup.cs добавьте:

 var emailConfig = new EmailConfig();
Configuration.GetSection("SendGridEmailSettings").Bind(emailConfig);
  

На этом этапе объект emailConfig имеет значения appsetting.json.

Если я могу предложить, я бы затем создал службу, предназначенную для отправки электронных писем, и передал объект EmailConfig службе один раз:

 public class EmailService : IEmailService
{
    private readonly EmailConfig _emailConfig;

    public EmailService(EmailConfig emailConfig)
    {
        _emailConfig = emailConfig
    }
}
  

Теперь вы можете отправить объект emailConfig в службу, добавив следующее в метод ConfigureServices в вашем startup.cs:

 services.AddTransient<IEmailService, EmailService>(_ =>
    new EmailService(emailConfig));