Registrieren von Abhängigkeiten innerhalb von TinyIOC zur Verwendung in NancyFX

8

Ich habe noch eine neue Frage bezüglich der Registrierung zusätzlicher Abhängigkeiten in TinyIoc zur Verwendung in NancyFX.

Ich bekomme weiterhin die folgenden Ausnahmen beim Ausführen der Anwendung ...

%Vor%

Ich registriere derzeit meine Abhängigkeiten falsch, aber ich kann nicht den richtigen Weg finden. Unten ist mein Code in meinem benutzerdefinierten Bootstrapper. Beachten Sie auch, dass ich derzeit die base.ConfigureRequestContainer-Methode nicht aufruft, da ich nicht herausfinden kann, wie der aktuelle Kontext in den Prozess übernommen werden kann.

%Vor%

Jede Hilfe würde wirklich geschätzt werden ... anscheinend hat meine Ignoranz keine Grenzen:)

    
TheWeekendDeveloper 05.03.2012, 18:08
quelle

1 Antwort

36

Ok, nicht 100% sicher wo du anfangen sollst. Du brauchst den Kontext nicht, weil du es falsch machst :-)

Erstens, warum rufen Sie überhaupt "configure request container" auf und warum erstellen Sie einen untergeordneten Container? Sie tun das nicht :-) Es gibt zwei Gültigkeitsbereiche, Anwendungsbereich, konfiguriert durch Überschreiben von ConfigureApplicationContainer und Anfragebereich, konfiguriert durch Überschreiben von ConfigureRequestContainer, Sie rufen sie nicht selbst, Sie überschreiben sie nur, je nachdem, wie Sie Geltungsbereich sein möchten Ihre Objekte.

Zweitens wird der Standard-Nancy-Bootstrapper alles "autoregistrieren", was in seiner Standardimplementierung von ConfigureApplicationContainer möglich ist. Mit dem Aufruf von "base" nachdem Sie eine manuelle Registrierung vorgenommen haben, kopieren Sie die ursprüngliche Registrierung automatisch durch autoregister. Rufen Sie die Basis nicht an oder rufen Sie sie vor der manuellen Registrierung an. Und rufen Sie ConfigureRequestContainer nicht erneut über Ihren ConfigureApplicationContainer auf: -)

Wenn Sie sich nicht darum kümmern, dass alles im Anwendungsbereich liegt (damit singetons dieselbe Instanz für jede Anfrage erhalten), brauchen Sie nichts davon, Sie können sich einfach auf autoregister verlassen.

Sie bauen gerade Ihre Objekte manuell auf und legen sie in den Container, was ein ziemlich seltsamer Weg ist. Normalerweise würden Sie nur die Typen registrieren und den Container bei Bedarf instanziieren lassen.

Sie überschreiben ConfigureRequestContainer nicht, Sie erstellen lediglich eine neue Methode (mit einer anderen Signatur).

Also, was Sie wahrscheinlich wollen, ist etwas wie:

%Vor%     
Steven Robbins 05.03.2012, 18:39
quelle

Tags und Links