public void Serialize(Stream output, object value, bool leaveStreamOpen = true) { if (output == null) { throw new ArgumentNullException("output"); } if (value == null) { throw new ArgumentNullException("value"); } var columnList = GetColumnList(value); using (var csv = new CsvBuilder(Settings, output, leaveStreamOpen)) { // Setup Columns csv.AddColumns(columnList); // Write out row data foreach (object rowObject in EnumerateRows(value)) { var row = csv.AddRow(); PopulateRowData(row, rowObject); } } }