Comment conciliez-vous IDisposable et le Cio?

Je suis enfin enveloppant ma tête autour du Cio et DI en C#, et je suis aux prises avec certains des bords. Je suis l'aide de l'Unité de conteneur, mais je pense que cette question s'applique de façon plus générale.

À l'aide d'un conteneur IoC pour distribuer les instances qui mettent en œuvre des IDisposable me fait flipper! Comment êtes-vous censé savoir si l'on doit en Disposer()? L'instance peut avoir été créé juste pour vous (et à cet effet, vous devez Disposer ()), ou il pourrait être une instance dont la durée de vie est géré ailleurs (et à cet effet, vous feriez mieux de ne pas). Rien dans le code que vous avez dit, et en fait, cela pourrait changer en fonction de la configuration!!! Cela semble mortel pour moi.

Peut-Cio experts y décrire les bonnes façons de gérer cette ambiguïté?

  • Ma solution est d'utiliser un Cio avec bon et bien codifiées gestion de durée de vie: AutoFac et le Château de Windsor ont, par exemple (bien qu'ils fonctionnent un peu différemment); Unité 2.1 simplement échoue lorsque vous traitez avec des transitoires en vertu de la durée de vie par défaut gestionnaires ..
InformationsquelleAutor Mr. Putty | 2009-06-12