Я работаю над созданием оболочки для загрузки файлов из хранилища BLOB-объектов Azure. У меня есть простая модель для файла
public class File
{
public Stream Data { get; set; }
public string Name { get; set; }
public string Path { get; set; }
public long Size { get; set; }
}
Мой метод загрузки файла выглядит следующим образом
private async Task<File> GetFile(string name, string path = null)
{
var blockBlob = _container.GetBlockBlobReference(GetKey(name, path));
await blockBlob.FetchAttributesAsync();
var memoryStream = new MemoryStream();
await blockBlob.DownloadToStreamAsync(memoryStream).ConfigureAwait(false);
memoryStream.Position = 0;
return new File(
name: name,
path: path: blockBlob.Uri.ToString(),
data: memoryStream,
size: blockBlob.Properties.Length);
}
Вопрос: нормально, что я создаю memoryStream и никогда не удаляю его? Должен ли я передать memoryStream в качестве параметра и перенести ответственность за время жизни для вызывающей стороны? Если да, то как я могу сделать это с моделью мю?