2010-11-26 31 views
0

J'ai besoin de mon UnityContainer pour contenir une instance de CacheManager qui devrait être créée une fois et réutilisée pour toutes les futures instances de conteneurs.Unity + Caching: comment conserver une instance d'objet qui devrait être un singletone

Je crée une nouvelle instance de UnityContainer chaque fois que j'en ai besoin ('CreateChildContainer' n'est pas utilisé).

J'ai créé un membre statique qui contient mon gestionnaire de cache et enregistré son instance.

Vous cherchez sur ce après une demi-année, je n'aime pas les membres statiques ...

aura-t-il fonctionner si je vais créer une instance unique de UnityContainer et y inscrire l'instance de CacheManager avec l'option « ContainerControlledLifetimeManager » ?

Voyez-vous une meilleure façon?

Merci.

+0

Je pense que l'utilisation de ContainerControlledLifetimeManager est la méthode recommandée .... –

Répondre

1

Conservez une instance du conteneur et utilisez ContainerControlledLifetimeManager. Créer beaucoup de conteneurs va mal fonctionner.

+0

Mais je voudrais avoir certains éléments (comme une connexion à DB) pour être en vie seulement pendant la demande et créer une nouvelle connexion pour chaque nouvelle demande (ASP.NET site Internet). Cela peut-il être fait en utilisant un seul conteneur qui créera un nouveau conteneur avec 'CreateChildContainer' qui à son tour enregistrera à ses propres fins la connexion à DB? – Budda

+0

Vous pouvez le faire, ou utiliser un PerRequestLifetimeManager distinct et un seul conteneur. –