Как построить модель из текстового файла без заголовков, но с определенным форматом

#c# #model #text-files #system.reflection #asp.net-core-2.2

#c# #Модель #текстовые файлы #system.reflection #asp.net-core-2.2

Вопрос:

У меня есть текстовый файл с определенным форматом. Я хочу прочитать этот текстовый файл и создать из него модель или привязать к нему какую-либо существующую модель.

 1  AL300 SAMPLE
2  Station 1001
3 
4  SampleGrade
5  PROP-SUMMARY
6  5213
7  True
8  Burst C BS ( 181)
9  PROP-VALUES
10 Front
11 22.001
12 1
13 PROP-VALUES
14 Middle
15 22.0
16 3
17 PROP-SUMMARY
18 5213
19 0
20 Burst C BS ( 181)
21 PROP-VALUES
22 Middle
23 22.0
24 3
25 end AL300 SAMPLE
  
  1. Первая строка является текстом заголовка и не должна быть частью модели.

  2. Последняя строка указывает конец файла и не должна быть частью модели.

  3. Номера строк приведены только для понимания. В исходном текстовом файле этого не будет.
  4. Строка 2,3,4 — это один набор данных, а строка 2 пуста (табуляция или возврат каретки).
  5. Строка 5 (PROP-SUMMARY) до строки 16 — это другой набор данных, который содержит свои собственные данные (строка 6,7,8) и список PROP-ЗНАЧЕНИЙ (строка 9 и строка 17). Строки 10,11,12 и 14,15,16 являются данными для ЗНАЧЕНИЙ PROP.

Теперь я хочу сгенерировать модель на основе этого. Я планирую построить модель примерно так

 public class SampleExportDto
{
    public SampleDetailsExportDto Sample { get; set; }
    public List<SummaryDto> Summary { get; set; }
}
public class SampleDetailsExportDto //SummaryDto
{
    public int    Id { get; set; }
    public string Name { get; set; }
    public string Info { get; set; }
}

public class SummaryDto
{
    public int    Id { get; set; }
    public string Name { get; set; }
    public string Info { get; set; }
    public List<ValuesDto> Values { get; set; }
}

public class ValuesDto
{
    public string Direction { get; set; }
    public string Height { get; set; }
    public string Width { get; set; }
}
  

Кто-нибудь может помочь мне в достижении этого, предполагая, что каждая строка имеет некоторое имя столбца, которое будет сопоставлено с моделью в данном DTO (объект передачи данных)

Комментарии:

1. Вам нужно будет создать пользовательский форматировщик. Смотрите: learn.microsoft.com/en-us/aspnet/core/web-api/advanced /…

2. @ChrisPratt Спасибо за ссылку. Я проверил ссылку, но не получил четкого представления о том, какой форматировщик использовать. Однако я создал пользовательский форматировщик вывода. Но теперь не уверен, как это использовать. У меня есть входной текстовый файл для чтения, и мне нужно назначить ему модель, правильно ли я поступаю?

3. Все это описано в документах, на которые я ссылался. Вы добавляете свой пользовательский форматировщик к форматировщикам ввода и / или вывода при вызове AddMvc . Как только это будет сделано, вам больше ничего не нужно будет делать. Вы просто привязываетесь к классу, как если бы вы принимали JSON, и когда тело запроса имеет тип mime, с которым связан ваш пользовательский форматировщик, он будет использовать этот пользовательский форматировщик для десериализации в класс.