Frage

Was ist die empfohlene Methode, um den AutoFAC -Container in einer Klasse in der Anwendung aus zu erhalten? Sorgt AutoFAC für die Lösung einer Icontainer -Eigenschaft in einer Klasse oder muss ich den Container global speichern, sobald ich ihn erstellt habe?

War es hilfreich?

Lösung

Du brauchst IComponentContext oder ILifetimeScope für die meisten Zwecke. Diese werden automatisch von AutoFAC bereitgestellt.

Beide Schnittstellen liefern den Standard Resolve() Operationen während ILifetimeScope erweitert IComponentContext Durch Hinzufügen von Methoden zum Starten neuer verschachtelter Lebensdauer.

Komponenten, die die Dienste des Containers nutzen möchten, um auf andere Komponenten zuzugreifen, müssen dies in ihrem eigenen Bereich und nicht in der „globalen“ Tätigkeit tun, und nicht im „Globalen“. IContainer, damit die richtige Instanz zurückgegeben werden kann. ZB in einer HTTP -Anforderung, die injizierte IComponentContext oder ILifetimeScope wird derjenige für die aktuelle Anfrage sein.

Die meisten Probleme, die einen injizierten Kontext erfordern, können auch (oft eleganter) mithilfe von Beziehungstypen überwunden werden - siehe: http://autofac.readthedocs.org/en/latest/resolve/relationships.html.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top