Ich versuche Strukturkarte zu bekommen, um meine Controller korrekt zu erstellen, ich verwende DI, um einen INewsService in einen NewsController zu injizieren, und das ist der einzige Konstruktor, den ich habe.ASP.NET MVC, MVCContrib, Strukturkarte, wie funktioniert es als 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);
}
}
und ich bin mit diesem Code den App starten
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));
}
}
Aber Structuremap scheint nicht das INewsService injizieren zu wollen, und ich bekomme die Fehler Kein parameterlosen Konstruktor für dieses Objekt definiert .
Was habe ich verpasst?
Danke!, Das hat mir sehr geholfen, ich konnte mein Problem umgehen :) –
@Erv in welchem Namensraum befindet sich Scan? Mir scheint eine Verwendung oder eine Referenz zu fehlen. – ahsteele
In der Version, die wir verwenden (das ist 8 Monate veraltet - ich habe nicht untersucht, was sich kürzlich geändert hat), ist Scan eine Methode für die Registry-Basisklasse, von der RepositoryRegistry in dem Beispiel erbt. –