private T ReadScalar <T>(DbDataReader dbDataReader) { if (typeof(T).IsAssignableFrom(dbDataReader.GetFieldType(0))) { if (dbDataReader.Read()) { return((T)dbDataReader[0]); } return(default(T)); } var overrideDbDataReader = new OverrideDbDataReader(dbDataReader); var dataWriter = RWHelper.CreateWriter <T>(); dataWriter.Initialize(); if (dataWriter is IDataWriter <int> ) { RWHelper.Copy(overrideDbDataReader, dataWriter); return(RWHelper.GetContent <T>(dataWriter)); } if (overrideDbDataReader.Read()) { RWHelper.Copy((IDataReader <string>)overrideDbDataReader, dataWriter); return(RWHelper.GetContent <T>(dataWriter)); } return(default(T)); }