#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
-
Первая строка является текстом заголовка и не должна быть частью модели.
-
Последняя строка указывает конец файла и не должна быть частью модели.
- Номера строк приведены только для понимания. В исходном текстовом файле этого не будет.
- Строка 2,3,4 — это один набор данных, а строка 2 пуста (табуляция или возврат каретки).
- Строка 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, с которым связан ваш пользовательский форматировщик, он будет использовать этот пользовательский форматировщик для десериализации в класс.