代码之家  ›  专栏  ›  技术社区  ›  K.Z

在.NET Core中,如何从appsetting.json中读取并在setter方法中为对象赋值

  •  0
  • K.Z  · 技术社区  · 5 年前

    appsetting.json应用程序设置

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

    }

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

    在我的核心课程中,我需要把这个值解读为

    public mailConfig emailConfig { get; set; } 
    
    0 回复  |  直到 5 年前
        1
  •  3
  •   MarioMendieta    5 年前

    我将首先重命名EmailConfig字段以匹配设置:

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

    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
        }
    }
    

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