10

我正在使用出色的 FileHelpers 库来处理固定长度的航班时刻表文件。

我有一个日期字段,然后是记录中的几个字段,一个时间字段。

我想在 FileHelpers 记录类中结合这两者,并且知道有一个自定义FieldConverter属性。使用此属性,您可以提供一个自定义函数来处理您的字段数据并实现StringToFieldFieldToString.

我的问题是:我是否也可以将其他字段(已读取)传递给该客户FieldConverter,以便我可以将日期和时间组合在一起。FieldConverter有一个实现,允许您引用自定义处理类和“其他字符串”甚至对象数组。但是,鉴于这是在属性定义中完成的,我很难访问这个较早的字段引用。

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

1 回答 1

5

事实上,您可以访问以前的字段,因为它们是按顺序读取的,但对于其他读取代码的人来说可能有点奇怪。

也许你可以实现接口 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)                 
}

希望这个帮手

干杯

于 2010-03-26T11:34:57.630 回答