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)?