Angenommen, ich habe die folgenden Klassen, die ich mit Ninject konstruieren möchte, mit den Pfeilen, die Abhängigkeiten zeigen.Ninject Scoping - verwenden Sie die gleiche Instanz über den gesamten zu erstellenden Graph
A > B > D
A > C > D
Ich möchte Ninject so konfigurieren, dass eine vorübergehende scoped ist, das heißt jedes Mal, wenn Ninject fragen Sie nach einem A, erhalten Sie ein neues. Ich möchte auch, dass B und C vorübergehend sind, du bekommst jedes Mal ein neues, wenn du nach einem A fragst. Aber ich möchte, dass das D über B und C wiederverwendet wird. Also jedes Mal, wenn ich ein A anfordere will, dass Ninject eines von jedem Objekt konstruiert, nicht zwei Ds. Aber ich möchte nicht, dass DS über verschiedene As wiederverwendet werden.
Was ist der beste Weg, um dies mit Ninject einzurichten?
Update:
Nach einigen mehr Forschung, scheint es wie Unity eine PerResolveLifetimeManager hat, die das tut, was ich suche. Gibt es ein Ninject-Äquivalent?
Wird das nicht brechen, wenn D auch Teil ist, wenn eine Abhängigkeitskette nicht A enthält? –
@ KevinBabcock. Nein, es wird nicht brechen. Dann gibt der Delegat "null" zurück, was der folgenden Registrierung entspricht: 'kernel.Bind() .ToSelf(). InTransientScope();' –
nemesv
Danke für die Klarstellung. Gute Antwort! –