Я использую StructureMap.MVC5 и имеют следующие проекты и классы:StructureMap с MVC и несколькими слоями
Web
HomeController(PageService pageService)
Services
PageService(IPageRepository pageRepository)
Repositories
PageRepository : IPageRepository
IRepositories
IPageRepository
С реализацией по умолчанию StructureMap.MVC5 автоматически устраняет PageService в мою HomeController, но не PageRepository в мой PageService. Это дает мне исключение: No parameterless constructor defined for this object.
Это решается путем добавления строки в DefaultRegistry:
For<IPageRepository>().Use<PageRepository>();
Но, очевидно, я предпочел бы StructureMap автоматически решить эту проблему. Есть ли способ достичь этого?
Это то, что DefaultRegistry выглядит следующим образом:
public DefaultRegistry()
{
Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.With(new ControllerConvention());
});
}