Skip to content

Instantly share code, notes, and snippets.

@angusbreno
Created October 23, 2022 15:34
Show Gist options
  • Save angusbreno/a4c02e2c670a2834539b154306024b7f to your computer and use it in GitHub Desktop.
Save angusbreno/a4c02e2c670a2834539b154306024b7f to your computer and use it in GitHub Desktop.
using Microsoft.Extensions.DependencyInjection;
namespace DependencyInjectionTest
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
var services = new ServiceCollection();
services.AddScoped<SendMessageManager>();
services.AddScoped<IMessageSenderService, SmsMessageSenderService>();
services.AddScoped<IBancoDeDados, MySqlBancoDados>();
var container = services.BuildServiceProvider();
var manager = container.GetService<SendMessageManager>();
manager.SendMessage(new Message() { Content = "asdasd" });
}
}
public class SendMessageManager
{
private readonly IMessageSenderService messageSenderService;
private readonly IBancoDeDados bancoDeDados;
public SendMessageManager(IMessageSenderService messageSenderService, IBancoDeDados bancoDeDados)
{
this.messageSenderService = messageSenderService;
this.bancoDeDados = bancoDeDados;
}
//post
public void SendMessage(Message message)
{
messageSenderService.Send(message);
bancoDeDados.SalvaLogNoBanco();
}
}
public interface IMessageSenderService
{
bool Send(Message message);
}
public class WhatsAppMessageSenderService : IMessageSenderService
{
public bool Send(Message message)
{
Console.WriteLine("enviou por whatsapp");
return true;
}
}
public class SmsMessageSenderService : IMessageSenderService
{
public bool Send(Message message)
{
Console.WriteLine("enviou por sms");
return true;
}
}
public class Message
{
public string Sender { get; set; }
public string Recipient { get; set; }
public string Content { get; set; }
}
public interface IBancoDeDados
{
void SalvaLogNoBanco();
}
public class MySqlBancoDados : IBancoDeDados
{
public void SalvaLogNoBanco()
{
Console.WriteLine("Salvou no banco de dados");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment