Sobes.tech
Junior — Middle

Tem experiência na utilização de containers de inversão de controlo nos seus projetos?

sobes.tech IA

Resposta da IA

Sim, nos projetos em C# é comum usar um contêiner de inversão de controle (contenor IoC) para gerir as dependências entre os componentes da aplicação. Isto facilita a criação e configuração de objetos, aumenta a modularidade e a testabilidade do código.

Por exemplo, com contêineres IoC populares como Microsoft.Extensions.DependencyInjection, Autofac ou Ninject, pode-se registar serviços e injetá-los automaticamente nos construtores das classes.

Exemplo de uso do Microsoft.Extensions.DependencyInjection:

using Microsoft.Extensions.DependencyInjection;

public interface IMessageService {
    void Send(string message);
}

public class EmailService : IMessageService {
    public void Send(string message) {
        Console.WriteLine($"A enviar email: {message}");
    }
}

class Program {
    static void Main() {
        var services = new ServiceCollection();
        services.AddTransient<IMessageService, EmailService>();

        var provider = services.BuildServiceProvider();

        var messageService = provider.GetService<IMessageService>();
        messageService.Send("Olá IoC!");
    }
}

Este método facilita a substituição de implementações, simplifica os testes com objetos simulados e promove uma arquitetura mais limpa.