Что мне нужно сделать, чтобы реализовать свой собственный поток, , который использует пользовательскую процедуру сжатия , аналогично, например, GZipStream
?
Я, очевидно, должен создать подкласс класса Stream
, но какие методы я должен реализовать, и какие методы можно оставить в их реализациях по умолчанию?
В сущности, есть специальная часть документации, , но, может быть, есть лучший и более простой вариант?
Примечания для разработчиков
При реализации производного класса Stream вы
должен обеспечить реализации для методов чтения и записи.
Асинхронные методы BeginRead, EndRead, BeginWrite и EndWrite являются
реализуется через синхронные методы чтения и записи. Так же,
ваши реализации Read и Write будут правильно работать с
асинхронные методы. Реализации по умолчанию ReadByte и
WriteByte создайте новый одноэлементный байтовый массив, а затем вызовите
реализации чтения и записи. При выводе из Stream, если вы
иметь внутренний байтовый буфер, настоятельно рекомендуется
переопределите эти методы для доступа к вашему внутреннему буферу для
существенно лучшая производительность. Вы также должны предоставить
реализации CanRead, CanSeek, CanWrite, Flush, Length,
Положение, поиск и установка длины.
Не переопределяйте метод Close, вместо этого поместите все Stream
логика очистки в методе Dispose. Для получения дополнительной информации см.
Реализация метода утилизации.