Я пытаюсь получить структуру структуры, чтобы правильно создавать мои контроллеры, я использую DI для ввода INewsService в NewsController, и это единственный конструктор, который у меня есть.ASP.NET MVC, MVCContrib, Structuremap, заставить его работать как controllerfactory?
public class NewsController : Controller
{
private readonly INewsService newsService;
public NewsController(INewsService newsService)
{
this.newsService = newsService;
}
public ActionResult List()
{
var newsArticles = newsService.GetNews();
return View(newsArticles);
}
}
, и я использую этот код, чтобы запустить приложение
public class Application : HttpApplication
{
protected void Application_Start()
{
RegisterIoC();
RegisterViewEngine(ViewEngines.Engines);
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterIoC()
{
ObjectFactory.Initialize(config => {
config.UseDefaultStructureMapConfigFile = false;
config.AddRegistry<PersistenceRegistry>();
config.AddRegistry<DomainRegistry>();
config.AddRegistry<ControllerRegistry>();
});
DependencyResolver.InitializeWith(new StructureMapDependencyResolver());
ControllerBuilder.Current.SetControllerFactory(typeof(IoCControllerFactory));
}
}
Но StructureMap, кажется, не хотят, чтобы впрыснуть INewsService и я получаю ошибку Нет конструктор без параметров определяется для данного объекта ,
Что я пропустил?
Спасибо !, это очень помогло мне, я смог обойти мою проблему :) –
@Erv какое пространство имен находится в Scan? Кажется, мне не хватает использования или ссылки. – ahsteele
В используемой нами версии (которая на 8 месяцев устарела - я не смотрел, что недавно изменилось), Scan - это метод в базовом классе реестра, который наследует RespositoryRegistry из примера. –