#.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));