In der aktuellen Anwendung, an der ich arbeite, habe ich eine benutzerdefinierte ControllerFactory-Klasse, die einen Controller erstellt und automatisch Elmah ErrorHandler setzt.Wie verwendet man StructureMap, um Repository-Klassen in den Controller zu injizieren?
Ich möchte StructureMap verwenden, um Code in meine Controller zu injizieren. Zum Beispiel würde ich gerne Repository-Klassen in sie injizieren.
ich habe bereits meine Repository-Klassen, und ich habe auch einen Konstruktor an die Steuerung, die der Repository Klasse
public FirmController(IContactRepository contactRepository) {
_contactRepository = contactRepository;
}
Ich habe dann registrierte die Art innerhalb StructureMap
ObjectFactory.Initialize(x => {
x.For<IContactRepository>().Use<MyContactRepository>();
});
Wie soll erhalten hinzugefügt Ich ändere den Code in der CreateController-Methode, um die IContactRepository
konkrete Klasse in die FirmController
injiziert zu haben?
EDIT:
Ich habe die BaseControllerFactory geändert Structuremap zu verwenden. Aber ich bekomme eine Ausnahme auf der Linie
Irgendwelche Hinweise?
Was ist der Fehler, den Sie bekommen? Rufen Sie Ihren Initialisierungscode in app_start auf, bevor Sie die benutzerdefinierte Controller-Factory festlegen? I.E. StaticClass.InitializeStructureMap(); Dann ControllerBuilder.Current.SetControllerFactory (new BaseControllerFactory()); – Paul
Guter Fang. Ich habe den Initialisierungscode aufgerufen, nachdem ich die benutzerdefinierte Controller-Fabrik eingestellt hatte. – Lorenzo