Skip to content

Instantly share code, notes, and snippets.

View vmussak's full-sized avatar

Vinicius Mussak vmussak

View GitHub Profile
public IActionResult EnviarMensagem(IServiceProvider serviceProvider, int clienteId)
{
//busca o cliente pelo clienteId informado
var cliente = new Cliente
{
Nome = "Vinicius Mussak",
TipoCliente = "Premium",
Id = clienteId
};
public class ClienteController : ControllerBase
{
private readonly IMensagemBoasVindas _mensagemBoasVindas;
public ClienteController([FromKeyedServices("Padrao")] IMensagemBoasVindas mensagemBoasVindas)
{
_mensagemBoasVindas = mensagemBoasVindas;
}
//demais métodos...
}
builder.Services.AddKeyedScoped<IMensagemBoasVindas, MensagemBoasVindasPadrao>("Padrao");
builder.Services.AddKeyedScoped<IMensagemBoasVindas, MensagemBoasVindasPremium>("Premium");
public class ClienteController : ControllerBase
{
private readonly IEnumerable<IMensagemBoasVindas> _mensagensBoasVindas;
public ClienteController(IEnumerable<IMensagemBoasVindas> mensagensBoasVindas)
{
_mensagensBoasVindas = mensagensBoasVindas;
}
//demais métodos...
}
@vmussak
vmussak / Construtor.cs
Created January 3, 2024 12:46
Construtor com apenas uma instância
public class ClienteController : ControllerBase
{
private readonly IMensagemBoasVindas _mensagemBoasVindas;
public ClienteController(IMensagemBoasVindas mensagemBoasVindas)
{
_mensagemBoasVindas = mensagemBoasVindas;
}
//demais métodos...
}
@vmussak
vmussak / AddScoped.cs
Created January 3, 2024 12:37
AddScoped
builder.Services.AddScoped<IMensagemBoasVindas, MensagemBoasVindasPadrao>();
builder.Services.AddScoped<IMensagemBoasVindas, MensagemBoasVindasPremium>();
@vmussak
vmussak / BoasVindasOcp.cs
Created January 2, 2024 15:06
Implementação da mensagem de boas-vindas utilizando OCP
public interface IMensagemBoasVindas
{
string CriarMensagem(Cliente cliente);
}
public class MensagemBoasVindasPadrao : IMensagemBoasVindas
{
public string CriarMensagem(Cliente cliente)
{
return $"Olá, {cliente.Nome}, estamos felizes que esteja conosco!";
@vmussak
vmussak / SemSolid.cs
Created January 2, 2024 15:00
Implementação da mensagem de boas-vindas sem SOLID
public class MensagemBoasVindas
{
public string CriarMensagem(Cliente cliente)
{
if (cliente.Tipo == "Padrão")
{
return $"Olá, {cliente.Nome}, estamos felizes que esteja conosco!";
}
else if (cliente.Tipo == "Premium")
{
@vmussak
vmussak / Program.cs
Created January 2, 2024 14:19
Exemplo de injeção de dependência com .NET
var builder = WebApplication.CreateBuilder(args);
//...outras configurações
builder.Services.AddScoped<IMensagem, Mensagem>();
//Outras configurações...
@vmussak
vmussak / Mensagem.cs
Created January 2, 2024 14:15
Exemplo de injeção de dependência com .NET
public interface IMensagem
{
string RetornaMensagem(string nome);
}
public class MensagemBoasVindas : IMensagem
{
public string RetornaMensagem(string nome)
{
return $"Olá {nome}, estamos felizes em lhe receber!";