public override long Seek(long offset, SeekOrigin origin) { if (!CanSeek) { throw new NotSupportedException(); } switch (origin) { case SeekOrigin.Begin: position = offset; break; case SeekOrigin.Current: position += offset; break; case SeekOrigin.End: position -= offset; break; } blockIndex = position / storage.BufferSize; streamBuffer = storage.ReadBuffer(blockIndex); bufferIndex = position % storage.BufferSize; return(position); }