2010-03-26 39 views
10

我正在使用優秀的FileHelpers庫來處理固定長度的航班計劃文件。C# - FileHelper FieldConverter例程可以引用記錄中的其他字段嗎?

我有一個日期字段,然後在記錄中的幾個字段,一個時間字段。

我想在FileHelpers記錄類中組合這兩個,並且知道有一個自定義的FieldConverter屬性。使用此屬性,您可以提供自定義功能來處理您的現場數據並實施StringToFieldFieldToString

我的問題是:我可以將其他字段(已讀取)傳遞給此客戶FieldConverter,以便我可以將日期和時間組合在一起。 FieldConverter有一個實現,它允許你引用一個自定義處理類和'其他字符串',甚至是一個對象數組。但是,鑑於這是在屬性定義中完成的,我正在努力訪問這個早期字段引用。

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

其實,而我仍然對這個問題感興趣,我(有點)找到了答案。 我忘了整個記錄實際上是一個類,所以我可以創建一個構造函數,並設置任何我想要的組合成員..... aaarrrrgggghh這麼簡單。 – Pete 2010-03-26 10:16:31

回答

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

希望這傭工

乾杯

相關問題