2010-11-26 4 views
0

Ich brauche in meinem UnityContainer eine Instanz von CacheManager, die einmal erstellt und für alle zukünftigen Instanzen von Containern wiederverwendet werden sollte.Unity + Caching: Wie behalte ich eine Objektinstanz, die ein Singletone sein sollte

Ich erstelle jedes Mal eine neue UnityContainer-Instanz, wenn ich sie brauche ('CreateChildContainer' wird nicht verwendet).

Ich habe ein statisches Member erstellt, das meinen Cache-Manager enthält und seine Instanz registriert hat.

auf dieser Suche nach dem Halbjahr, ich weiß nicht wie statische Member ...

Wird es funktionieren, wenn ich eine einzelne Instanz UnityContainer schaffen und registrieren dort die Instanz von Cachemanager mit ‚ContainerControlledLifetimeManager‘ Option ?

Sehen Sie einen besseren Weg?

Danke.

+0

Ich denke mit ContainerControlledLifetimeManager ist der empfohlene Weg .... –

Antwort

1

Behalten Sie eine Instanz des Containers bei und verwenden Sie ContainerControlledLifetimeManager. Das Erstellen von vielen Containern wird schlecht funktionieren.

+0

Aber ich möchte einige Elemente (wie eine Verbindung zu DB) nur während der Anfrage lebendig sein und erstellen Sie eine neue Verbindung für jede neue Anfrage (ASP.NET Webseite). Kann dies mit einem einzelnen Container gemacht werden, der einen neuen Container mit 'CreateChildContainer' erstellt, der wiederum die Verbindung zur DB für eigene Zwecke registriert? – Budda

+0

Sie könnten das tun oder einen separaten PerRequestLifetimeManager und einen einzelnen Container verwenden. –