Я использую Amazon SDK, и у меня есть метод, который возвращает Stream для объекта, хранящегося в сервисе Amazon S3.
Содержит что-то вроде этого:
var request = new GetObjectRequest().WithBucketName(bucketName).WithKey(keyName);
using (var response = client.GetObject(request))
{
return response.ResponseStream;
}
Очевидно, что при этом поток не читается из вызывающего метода, поскольку объект запроса был удален, а когда это сделано, он закрывает поток.
Я не хочу загружать файл в MemoryStream или FileStream.
Если я не использую предложение using, сборщик мусора в какой-то момент удалит объект запроса, поэтому я просто не могу его не использовать.
Я спрашиваю: есть ли способ обернуть или скопировать поток в другой поток, а затем вернуть его без необходимости загрузки файла?
Я использую .NET 3.5.
Редактировать: Метод унаследован от абстрактного класса, а метод вызывающей стороны не знает, что он работает с Amazon. Так что ДОЛЖЕН вернуть поток.