interface IMyInterace
{
void Open();
object Read();
void Close();
}
class MyImplementation : IMyInterface
{
public void Open() { /* instantiates disposible class */ }
//...
public void Close() { /* calls .Dispose(); */ }
}
¿Hay una buena manera de manejar este tipo de situaciones para garantizar que se llamen las instancias desechables dentro de la clase? (No hay señal para las personas que llaman que deben llamar 'Cerrar' excepto en la documentación.) Las implementaciones de IMyInterface no necesariamente encapsulan las instancias IDisposible y se cierran y vuelven a abrir repetidamente a lo largo de la vida de la aplicación.¿Cómo tratar con una clase que encapsula una instancia desechable?
Estoy pensando en hacer esto:
- Implementar IDisposible en MyImplementation.
- Set Dispose() para llamar a Close().
- Agregue una llamada a Cerrar() o Desechar() al que comienza de Abierto para asegurar que la llamada anterior se cerró.
Los usuarios de IMyInterface no saben qué aplicación que están utilizando, así que no estoy seguro de cuánto tiene el valor de hacer disposible MyImplementation, y de nuevo, no todas las implementaciones encapsular IDisposibles.
No es necesario el patrón desechable lleno.No es necesario un destructor y, por lo tanto, no para SuprimirFinalizar. –