Sobes.tech
Junior — Middle

Hai esperienza nell'uso di contenitori di inversione del controllo nei tuoi progetti?

sobes.tech AI

Risposta dell'AI

Sì, nei progetti C# è comune utilizzare un contenitore di inversione del controllo (contenitore IoC) per gestire le dipendenze tra i componenti dell'applicazione. Questo semplifica la creazione e la configurazione degli oggetti, aumenta la modularità e la testabilità del codice.

Ad esempio, con contenitori IoC popolari come Microsoft.Extensions.DependencyInjection, Autofac o Ninject, è possibile registrare servizi e iniettarli automaticamente nei costruttori delle classi.

Esempio di utilizzo di 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($"Invio 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("Ciao IoC!");
    }
}

Questo approccio facilita la sostituzione delle implementazioni, semplifica i test tramite oggetti mock e promuove un'architettura più pulita.