← Каталог
Паттерн "Фабрика" в C# — когда хватает DI-контейнера — Выбор реализации в рантайме
Фрагмент из «Паттерн "Фабрика" в C# — когда хватает DI-контейнера»: Выбор реализации в рантайме.
public class CheckoutService
{
private readonly IServiceProvider _serviceProvider;
public CheckoutService(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public Task PayAsync(string userChoice)
{
var provider = _serviceProvider
.GetRequiredKeyedService<IPaymentProvider>(userChoice);
return provider.PayAsync();
}
} public class CheckoutService
{
private readonly IServiceProvider _serviceProvider;
public CheckoutService(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public Task PayAsync(string userChoice)
{
var provider = _serviceProvider
.GetRequiredKeyedService<IPaymentProvider>(userChoice);
return provider.PayAsync();
}
}