private static IEnumerable<object> ReadRows(IFrameReader frameReader, IColumnSpec[] columnSpecs, IDataMapperFactory mapperFactory) { Stream stream = frameReader.ReadOnlyStream; int rowCount = stream.ReadInt(); for (int rowIdx = 0; rowIdx < rowCount; ++rowIdx) { IInstanceBuilder instanceBuilder = mapperFactory.CreateBuilder(); foreach (ColumnSpec colSpec in columnSpecs) { byte[] rawData = stream.ReadByteArray(); object data = null != rawData ? colSpec.Deserialize(rawData) : null; instanceBuilder.Set(colSpec, data); } yield return instanceBuilder.Build(); } }