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

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

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

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

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

[FieldFixedLength(4)]  
[FieldConverter(typeof(MyTimeConverter),"eg. ScheduledDepartureDate")]  
public DateTime scheduledDepartureTime;
10
задан Pete 26 March 2010 в 06:53
поделиться

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)                 
}

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

Cheers

5
ответ дан 4 December 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: