Quando usi un contenitore IoC, in questo modo:
var svc = IoC.Resolve<IShippingService>();
In che modo il contenitore IoC sceglie quale implementazione di IShippingService istanziare?
Inoltre, se sto chiamando quanto sopra per sostituire il codice equivalente:
var svc = new ShippingService(new ProductLocator(),
new PricingService(), new InventoryService(),
new TrackingRepository(new ConfigProvider()),
new Logger(new EmailLogger(new ConfigProvider())));
Suppongo che ProductLocator , PricingService , ecc. vengano richiamati nei parametri del costruttore come interfacce, non come classi concrete. In che modo il contenitore IoC sa quali implementazioni di IProductLocator , IPricingService , ecc. Per istanziare?
Il contenitore IoC è abbastanza intelligente da usare lo stesso ConfigProvider per entrambe le dipendenze (se questo è il requisito)?