CSV to object model mapping



Worksheet will me the main container. Worksheet should contain the list of Rows,
each row should contain the list of Cells
Create the FileReader class with the method GetWorksheet(string path).
This method will read the file from the path specified and return the filled Worksheet object

public
static Worksheet GetWorksheet(string path) { Worksheet worksheet = new Worksheet(); using (StreamReader sr = new StreamReader(path)) { Row row = new Row(); while (!sr.EndOfStream) { var data = sr.ReadLine().Split(','); Cell cell = new Cell(); cell.Id = data[0]; cell.FirstName = data[1]; cell.LastName = data[2]; cell.Email = data[3]; row.Cells.Add(cell); } worksheet.Rows.Add(row); } return worksheet; }

Як не харккодити дані під конкретний файл і під конкретні проперті в моделі Cell ?
Буду вдячна за допомогу.
   Cell cell = new Cell();
                    cell.Id = data[0];
                    cell.FirstName = data[1];
                    cell.LastName = data[2];
                    cell.Email = data[3];
                    row.Cells.Add(cell);

Чисто на вскидку, без компіляції, здається, що строку створення екземпляра класа Cell

Cell cell = new Cell();

варто винести за цикл while, бо якось виходить що кожний перехід по циклу у тебе постійно створюється новий екземпляр класу, що означає додаткові затрати по часу та пам'яті...

Вийде якось так:

static Worksheet GetWorksheet(string path)
        {
            Worksheet worksheet = new Worksheet();
            using (StreamReader sr = new StreamReader(path))
            {
                Row row = new Row();
                Cell cell = new Cell();
                while (!sr.EndOfStream)
                {
                    var data = sr.ReadLine().Split(',');
                    cell.Id = data[0];
                    cell.FirstName = data[1];
                    cell.LastName = data[2];
                    cell.Email = data[3];
                    row.Cells.Add(cell);
                }
                worksheet.Rows.Add(row);
            }
            return worksheet;
        }

Якщо тобі не подобається саме вигляд цієї частини:

   cell.Id = data[0];
   cell.FirstName = data[1];
   сell.LastName = data[2];
   cell.Email = data[3];
   row.Cells.Add(cell);

, то навіть не знаю, чи можливо його якось спростити... Неначе нормальний код, по полям заповнювати екземпляр класу - це нормально... Не бачу тут прямо хардкоду