Подтвердить что ты не робот

С# - Может ли программа FileHelper FieldConverter ссылаться на другие поля в записи?

Я использую отличную библиотеку FileHelpers для обработки файла расписания авиакомпании с фиксированной длиной.

У меня есть поле даты, затем несколько полей позже в записи, поле времени.

Я хочу объединить оба из них в классе записи FileHelpers и знаю, что есть пользовательский атрибут FieldConverter. С помощью этого атрибута вы предоставляете настраиваемую функцию для обработки ваших полевых данных и реализуете StringToField и FieldToString.

Мой вопрос: могу ли я передать другим полям (уже прочитанным) этому клиенту FieldConverter тоже, поэтому я могу комбинировать дату и время вместе. FieldConverter имеет реализацию, которая позволяет ссылаться как на собственный класс обработки AND "другие строки", так и на массив объектов. Но, учитывая это, в определении атрибута, я пытаюсь получить доступ к этой ссылке более раннего поля.

[FieldFixedLength(4)]  
[FieldConverter(typeof(MyTimeConverter),"eg. ScheduledDepartureDate")]  
public DateTime scheduledDepartureTime;
4b9b3361

Ответ 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)                 
}

Надеюсь, что это помощники

Приветствия