Если вы хотите иметь синтаксис, такой как Fluent API, вам нужно изменить какую-то точку вашего класса.Сначала вам нужно, чтобы Open возвращал текущий экземпляр, а затем используйте этот экземпляр для вызова Read.Но это предполагает, что вы сохраняете StreamReader как внутреннюю переменную класса
public class ReadTheFile : IDisposable
{
private int _lineCounter = 0;
private string _lineOfText;
private StreamReader _sr = null;
public ReadTheFile Open(string path)
{
_sr = new StreamReader(path);
return this;
}
public void Read()
{
if(_sr == null) return;
while ((_lineOfText = _sr.ReadLine()) != null) {
Console.WriteLine(_lineOfText);
}
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if(_sr != null)
{
_sr.Close();
_sr = null;
}
}
}
}
, и теперь вы можете написать
using(ReadTheFile myObject = new ReadTheFile())
myObject.Open(@"C:\file.txt").Read();
Обратите внимание, что наличие StreamReader между вашими внутренними переменными требует от васреализовать интерфейс IDisposable для правильного закрытия и удаления потока