簡體   English   中英

將實際記錄作為屬性包含在 Filehelpers 記錄對象中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM