public override long Seek(long offset, SeekOrigin origin)
{
long position = 0;
switch (origin)
{
case SeekOrigin.Begin:
position = this.initialPosition + offset;
break;
case SeekOrigin.Current:
position = base.Position + offset;
break;
case SeekOrigin.End:
position = base.Position + this.partSize + offset;
break;
}
if (position < this.initialPosition)
{
position = this.initialPosition;
}
else if (position > this.initialPosition + this.partSize)
{
position = this.initialPosition + this.partSize;
}
base.Position = position;
return this.Position;
}