I'm writing an API that exports data to a `Stream`:

```
public interface IExporter<in T>
{
    Task ExportAsync(IEnumerable<T> inputs, Stream output);
}

```

Probably the various `IExporter` implementations will use a form of `TextWriter`/`StreamWriter` but I don't want to enforce it on the interface.

The main problem with the usage of `StreamWriter` is that by default it closes the underlying stream (I know that there's a constructor but it requires `bufferSize`, I could subclass `StreamWriter` but I don't like it either).

Shall I simply "own" the `Stream` in my `IExporter` implementation (and dispose it by disposing my `StreamWriter`) or are there any better ways to handle this problem?