public override long Seek(long offset, SeekOrigin origin)
{
long pos;
switch (origin)
{
case SeekOrigin.Begin:
pos = offset;
break;
case SeekOrigin.Current:
pos = _pos + offset;
break;
case SeekOrigin.End:
pos = _length + offset;
break;
default:
throw new ArgumentException("Invalid origin");
}
Position = pos;
return pos;
}