С# - Может ли программа FileHelper FieldConverter ссылаться на другие поля в записи?
Я использую отличную библиотеку FileHelpers для обработки файла расписания авиакомпании с фиксированной длиной.
У меня есть поле даты, затем несколько полей позже в записи, поле времени.
Я хочу объединить оба из них в классе записи FileHelpers и знаю, что есть пользовательский атрибут FieldConverter
. С помощью этого атрибута вы предоставляете настраиваемую функцию для обработки ваших полевых данных и реализуете StringToField
и FieldToString
.
Мой вопрос: могу ли я передать другим полям (уже прочитанным) этому клиенту FieldConverter
тоже, поэтому я могу комбинировать дату и время вместе. FieldConverter
имеет реализацию, которая позволяет ссылаться как на собственный класс обработки AND "другие строки", так и на массив объектов. Но, учитывая это, в определении атрибута, я пытаюсь получить доступ к этой ссылке более раннего поля.
[FieldFixedLength(4)]
[FieldConverter(typeof(MyTimeConverter),"eg. ScheduledDepartureDate")]
public DateTime scheduledDepartureTime;
Ответы
Ответ 1
Фактически вы можете получить доступ к предыдущим полям, потому что их читают по порядку, но могут быть немного странными для другого чтения кода.
Возможно, вы можете реализовать интерфейс INotifyRead и по методу AfterRead сделать все, что вам нужно.
В вашем классе должно быть что-то вроде:
public class YourRecord
...
[FieldFixedLength(6)]
public string scheduledDepartureDate;
[FieldFixedLength(4)]
public string scheduledDepartureTime;
[FieldIgnored]
public DateTime scheduledDepartureDateTime;
public void AfterRead(EngineBase engine, string line)
{
scheduledDepartureDateTime = CombineDateTime(scheduledDepartureDate, scheduledDepartureTime)
}
Надеюсь, что это помощники
Приветствия