public virtual String ReadLine()
{
StringBuilder sb = new StringBuilder();
bool inQuotes = false;
while (true)
{
int ch = _reader.Read();
if (ch == -1) break;
if (ch == _dialect.Quote) inQuotes = !inQuotes;
if (!inQuotes && (ch == '\r' || ch == '\n'))
{
if (ch == '\r' && _reader.Peek() == '\n') _reader.Read();
return sb.ToString();
}
sb.Append((char)ch);
}
if (sb.Length > 0) return sb.ToString();
return null;
}