Наследование от IDisposable
От: cybosser Россия  
Дата: 10.01.11 19:29
Оценка:
Здравствуйте, уважаемые форумчане!

Есть интерфейс IStorage, представляющий хранилище файлов:

public interface IStorage
{
    IEnumerable<string> Entries { get; }

    void Add(Stream stream, string entryName);
    void Add(string fileName, string entryName);

    void Extract(string entryName, Stream stream);
    void Extract(string entryName, string fileName);
}


Есть несколько классов реализующих данный интерфейс, при этом один из этих классов реализует также IDisposable, т.к. содержит управляемый ресурс в качестве поля:

public sealed class ArchiveStorage : IStorage, IDisposable
{
    private readonly ZipFile _zipFile;

    public void Dispose()
    {
        _zipFile.Close();
    }

    // ...
}


Разрабатываемая система знает лишь интерфейс IStorage, а посему не может принудительно вызвать Dispose для освобождения ресурсов ArchiveStorage.

Имеет ли смысл в таком случае наследование IStorage от IDisposable и наличие пустых методов Dispose в классах, не содержащих ресурсов для освобождения или стоит просто закрыть глаза на частный случай в виде ArchiveStorage?
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. Мартин Фаулер
idisposable
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.