2016-07-20 11 views
1

Ich bin ziemlich neu in das Konzept der Lebensdauer Abhängigkeit. Ich habe die Dokumentation über different lifetime types gelesen.Lebensdauer von InstancePerDependency mit Konstruktor-Injektion Autofac

Für die InstancePerDependency der Standardwert. Die Seite spricht von Auflösung in einem Lebensdau- er, so dass der Container sie ordnungsgemäß entsorgen kann. Ich kann das verstehen.

Aber was ist, wenn Autofac automatisch Abhängigkeit durch den Konstruktor injiziert. Enthält der Container noch eine Referenz, wenn eine Webanforderung abgeschlossen wurde?

Antwort

3

hilft.

Beachten Sie, dass mit Autofac Integrationsbibliotheken Standardeinheit-of-Arbeit Lebensdauer Bereiche wird für Sie automatisch erstellt und entsorgt werden. Zum Beispiel wird in Autofacs ASP.NET MVC-Integration ein lebenslanger Gültigkeitsbereich für Sie am Anfang einer Webanforderung erstellt und alle Komponenten werden im Allgemeinen von dort aus aufgelöst. Am Ende der Webanforderung wird der Bereich automatisch entfernt. Es ist keine zusätzliche Erstellung des Bereichs erforderlich. Wenn Sie eine der Integrationsbibliotheken verwenden, sollten Sie wissen, welche automatisch erstellten Bereiche für Sie verfügbar sind.

Mit anderen Worten, wenn Autofac Ihre Controller ist die Erstellung von Web-Anfragen zu behandeln (was es sein muss, wenn es Abhängigkeiten ist die Injektion), dann werden Abhängigkeiten aufgelöst werden unter Verwendung der für jeden Controller erstellt Tive und angeordnet, wenn die Web-Anfrage Enden .

+0

Yup. Dieser Begriff des Haltens einer zu entsorgenden Referenz ist der Grund, warum Sie den Container nicht direkt auflösen sollten. –

+0

Also in diesem Fall IntancePerDependency ist eigentlich das gleiche wie InstancePerRequest? – Jonathon

+0

So habe ich es verstanden. –