Sobes.tech
Junior — Middle

Czy masz doświadczenie w korzystaniu z kontenerów inwersji kontroli w swoich projektach?

sobes.tech AI

Odpowiedź od AI

Tak, w projektach C# często używa się kontenera inwersji kontroli (IoC) do zarządzania zależnościami między komponentami aplikacji. Umożliwia to uproszczenie tworzenia i konfiguracji obiektów, zwiększa modularność i testowalność kodu.

Na przykład, za pomocą popularnych kontenerów IoC, takich jak Microsoft.Extensions.DependencyInjection, Autofac czy Ninject, można rejestrować usługi i automatycznie wstrzykiwać je do konstruktorów klas.

Przykład użycia 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($"Wysyłanie emaila: {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("Witaj IoC!");
    }
}

Takie podejście ułatwia zamianę implementacji, upraszcza testowanie za pomocą obiektów mock i sprzyja czystszej architekturze.