Created
October 23, 2022 15:34
-
-
Save angusbreno/a4c02e2c670a2834539b154306024b7f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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