Если вы имеете в виду, что вам нужно предоставить поток, который является частью файла (или любого другого потока), то вы обычно используете один из двух подходов:
- создать класс SubStream: Stream, который инкапсулирует (украшает) внутренний поток и отслеживает, сколько данных было прочитано, и разрешает только чтение «n» байтов (предоставленных в конструкторе) и возвращает 0 из Read после использования (также запомнив Максу запрошенные байты и оставшиеся байты во время чтения)
- напишите свой код так, чтобы он внутренне отслеживал данные относительно некоторого ограничения, и просто никогда не перечитывали
Первоеполезно, если вам нужно передать этот поток уже существующему коду / библиотекам.
В обоих случаях IMO-код, который устанавливает поток, должен беспокоиться о данных «до», а вышеприведенное только о том, чточитаю слишком много.
Редактировать: вот что я написал ранее: http://protobuf -net.googlecode.com / svn / branch / v1 / protobuf-net / SubStream.cs