public static Stream ReopenForReading(this Stream stream)
{
if (stream.CanRead && stream.CanSeek && stream.CanWrite)
{
stream.Position = 0;
return stream;
}
var fileStream = stream as FileStream;
if (fileStream != null)
{
return new FileStream(fileStream.Name, FileMode.Open, FileAccess.Read, FileShare.Read);
}
var memoryStream = stream as MemoryStream;
if (memoryStream != null)
{
return new MemoryStream(memoryStream.ToArray());
}
throw new InvalidOperationException("Can not ReopenForReading.");
}