[英]Include the actual record as a property in Filehelpers record object
我正在使用 Filehelpers 庫解析 BgMax 文件(由行分隔的普通文本文件,每個屬性在行中有特定的長度),並且我已經成功地使用 FixedLengthRecord 創建了對象和記錄。 但是,我想將每條記錄的整行存儲為字符串,而不僅僅是將屬性存儲為對象。 是否有一種巧妙的方法,例如向 Record 類添加 FieldHidden 屬性或其他內容,以便它自動將整行保存在那里? 我還想在創建 Record 對象后保存該行,但我認為這樣做有點復雜/不是一個好主意,因為我認為我需要通過反射訪問該屬性。
作為示例,這里是我使用的記錄類之一
[FixedLengthRecord(FixedMode.AllowMoreChars)]
public class StartRecord
{
[FieldFixedLength(2)]
public string PostType;
[FieldFixedLength(20)]
public string LayoutName;
...
[FieldFixedLength(1)]
public string TestMarker;
}
在這個 StartRecord 類上,我想要另一個名為 Source 的字符串屬性,它在轉換為對象之前將包含整行。 該對象是從這段代碼填充的,很容易得到那一行,因為它的記錄來自記錄列表的 foreach 循環。
switch (record.Substring(0, 2))
{
case "01":
return typeof (StartRecord);
}
所以我也許可以在這里居住,但我不太喜歡它。
您可以使用事件接口:
[FixedLengthRecord(FixedMode.AllowMoreChars)]
public class StartRecord
: INotifyRead
{
[FieldFixedLength(2)]
public string PostType;
...
// Field hidden to the lib
[FieldHidden]
public string Source;
public void BeforeRead(BeforeReadEventArgs e)
{
this.Source = e.RecordLine;
}
public void AfterRead(AfterReadEventArgs e)
{
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.