我有一个单独的类来创建CSV文件并将其添加到内存流和一个单独的类来发送文件(将其上传到云存储)我这样做是因为这是两个不同的工作,这是创建内存流的类:
public MemoryStream ExecuteUseCase(Myclass listOfStudents)
{
var memoryStream = new MemoryStream();
var streamWriter = new StreamWriter(memoryStream);
var csvWriter = new CsvWriter(streamWriter, CultureInfo.InvariantCulture);
csvWriter.WriteRecords(listOfStudents.FileBody);
streamWriter.Flush();
memoryStream.Position = 0;
return memoryStream;
}
}
你可以看到,我已经从块中删除了using因为如果我在这里添加using,它们将关闭流并且在另一个类中无法访问,这是我的第二个类:
var memoryStream = this.convertToCsv.ExecuteUseCase(file);
await blobClient.UploadAsync(memoryStream, true);
this approach works, but my only concern is the memoryStream disposal, how to close it? Or do I need even?
在使用它的类中使用
using(var memoryStream = this.convertToCsv.ExecuteUseCase(file)){
await blobClient.UploadAsync(memoryStream, true);
}