开发者

C# - Can FileHelper FieldConverter routines refer to other fields in the record?

开发者 https://www.devze.com 2022-12-25 04:21 出处:网络
I am using the excellent FileHelpers library to process a fixed-length airline schedule file. I have a date field, then a few fields later on in the record, a time field.

I am using the excellent FileHelpers library to process a fixed-length airline schedule file.

I have a date field, then a few fields later on in the record, a time field.

I want to combine both of these in the FileHelpers record class, and know there is a custom FieldConverter attribute. With this attribute, you provide a custom function to handle your field data and implement StringToField and FieldToString.

My question is: can I pass other fields (already read开发者_开发技巧) to this customer FieldConverter too, so I can combine Date and Time together. FieldConverter has an implementation that allows you to refer to both a custom processing class AND 'other strings' or even an array of object. But, given this is done in the attribute definition, I am struggling to access this earlier-field reference.

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


In fact you can access previous fields because them are read in order but can be a bit strange for other reading the code.

Maybe you can implement the interface INotifyRead and on the method AfterRead do all the stuff

Your class must be something like:

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

Hope this helpers

Cheers

0

精彩评论

暂无评论...
验证码 换一张
取 消