Я не совсем уверен, что мешает вам избавиться от него в конструкторе, который принимает FileStream
:
public Source(FileStream fileStream) {
try
{
// Stuff
}
finally
{
fileStream.Dispose();
}
}
public Source(String fileName) : this(new FileStream(fileName, FileMode.Open)) {
// Nothing, the other constructor does the work
}
Если это потому, что вы хотите сохранить Stream
живым для абонентовFileStream
конструктор, вы можете добавить третий private
конструктор:
public Source(FileStream fileStream): this(fileStream, disposeStream: false) {
// Nothing, the other constructor does the work
}
public Source(String fileName) : this(new FileStream(fileName, FileMode.Open), disposeStream: true) {
// Nothing, the other constructor does the work
}
private Source(FileStream fileStream, bool disposeStream) {
try
{
// Stuff
}
finally
{
if (disposeStream)
{
fileStream.Dispose();
}
}
}