ASP .NET Core - Usando o padrão Options simplificado
Neste artigo veremos usar o padrão Options em aplicações ASP .NET Core usando uma abordagem simplificada. |
Podemos definir a configuração em nossos projetos ASP .NET Core usando o padrão Options conforme descrito na documentação oficial: Options Pattern
Neste artigo vamos usar uma abordagem simplificada na utilização deste padrão onde vamos supor que as opções nunca serão alteradas.
Assim vamos supor que vamos definir a configuração de um servidor Smtp onde vamos definir o domínio e a porta.
De acordo com a documentação oficial a sugestão de uso do padrão Option para realizar essa tarefa seria fazer o seguinte:
1- Definir no arquivo appsettings.json os valores e as chaves:
{ "SmtpConfiguration": { "Domain": "smtp.gmail.com", "Port": 465 } } |
A seguir na classe SmtpConfiguration vamos definir as propriedades Domain e Port:
public class SmtpConfiguration { public string Domain { get; set; } public int Port { get; set; } } |
E no método ConfigureServices da classe Startup vamos registrar o serviço:
public void ConfigureServices(IServiceCollection services) { services.Configure<SmtpConfiguration>(Configuration.GetSection("SmtpConfiguration")); services.AddControllersWithViews(); } |
Para obter o valor podemos definir o controller HomeController o código a seguir:
public class HomeController : Controller { private readonly SmtpConfiguration _smtpConfiguration; public HomeController(IOptions<SmtpConfiguration> smtpConfiguration) { _smtpConfiguration = smtpConfiguration.Value; } public IActionResult Index() { return View(); } } |
Esta seria a abordagem tradicional.
Usando uma abordagem simplificada
Vamos agora usar uma abordagem onde não vamos mais usar IOptions em controladores, serviços e repositórios.
Em vez disso, vamos extrair o objeto SmtpConfiguration de IOptions<SmtpConfiguration> e injetá-lo em controladores, serviços e repositórios como um singleton.
Vamos começar alterando a configuração do serviço no método ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
var smtpConfiguration = new SmtpConfiguration();
Configuration.Bind("SmtpConfiguration", smtpConfiguration);
services.AddSingleton(smtpConfiguration);
services.AddControllersWithViews();
}
|
Agora podemos consumir o serviço de uma forma bem simples:
public class HomeController : Controller
{
private readonly SmtpConfiguration _smtpConfiguration;
public HomeController(SmtpConfiguration smtpConfiguration)
{
_smtpConfiguration = smtpConfiguration;
}
public IActionResult Index()
{
return View();
}
}
|
Executando o projeto e colocando um breakpoint no construtor HomeController vamos obter:
E estamos conversados...
"Porque, como o
relâmpago ilumina desde uma extremidade inferior do céu até à outra extremidade,
assim será também o Filho do homem no seu dia."
Lucas 17:24
Referências:
ASP .NET Core - Implementando a segurança com .
ASP.NET Core MVC - Criando um Dashboard ..
C# - Gerando QRCode - Macoratti
ASP .NET - Gerando QRCode com a API do Google