IoC container for ProductService without registry entry?
I am studying Chapter 8 at the moment and am reading the MVP section where you have the following in bootstrapper:
publicclassControllerRegistry : Registry
{
public ControllerRegistry()
{
ForRequestedType<ICategoryRepository>().TheDefault.Is.OfConcreteType<CategoryRepository>();
ForRequestedType<IProductRepository>().TheDefault.Is.OfConcreteType<ProductRepository>();
ForRequestedType<IPageNavigator>().TheDefault.Is.OfConcreteType<PageNavigator>();
ForRequestedType<IBasket>().TheDefault.Is.OfConcreteType<WebBasket>();
}
}
And I am also seeing code like this
protectedvoid Page_Init(object sender, EventArgs e)
{
_presenter = newProductDetailPresenter(this, ObjectFactory.GetInstance<ProductService>(),
ObjectFactory.GetInstance<IBasket>(),
ObjectFactory.GetInstance<IPageNavigator>());
}
see the bolded line above.
My question is: since we don't have an entry for ProductService, how can we get IoC to pass a reference this way?
Shouldn't we instead have
_presenter = newProductDetailPresenter(this,
newProductService(
ObjectFactory.GetInstance<ICategoryRepository>(),
ObjectFactory.GetInstance<IProductRepository>()
),
....
....)
Is this explained anywhere in the book?
Thanks!
|