Digamos que tiene 3 clases que implementan IDisposable - A, B y C. Las clases A y B son ambos dependientes de la clase C.¿Un ejemplo problemático del patrón IDisposable?
¿Sería correcto decir que las clases A y B de implementación típica de Desechar() sería:
public void Dispose() { if (m_C != null) m_C.Dispose(); }
Si hay una instancia de A y e instancia de B que comparten la misma instancia de C, ¿cómo superar el problema que desechar una instancia de un dañaría th e instancia de B?
Addenda de último minuto: si en el punto 2 se trata de un contenedor DI que instancia todas las instancias, ¿quién es responsable de deshacerse de los objetos? ¿Es el contenedor en sí? ¿Cómo?
Gracias, urig
Hay una razón por la que Jon tiene 195k rep :) –
Para aclarar, en mi caso, no A ni B son los propietarios distintos de C. Por ejemplo, imagine que C presiona datos en tiempo real y tanto A como B lo consumen. Un contenedor DI se encarga de crear instancias de C para A y para B, pero ¿quién está a cargo de su eliminación? – urig
@urig: En esa situación, ¿cuándo querrías * desecharlo? Normalmente encuentro que hay formas de diseñar alrededor de esto que evitan el problema por completo, pero eso depende de la situación. –