[英]Reading and writing file with various types with FileHelpers
如何使用FileHelpers在以下類中讀取/寫入以下文件:
以下課程:
public class SegmentP
{
public string RegistryType { get; set; }
public string Country { get; set; }
}
public class Detail
{
public int RegistryType { get; set; }
public int CodeCustomer { get; set; }
public double NominalValue { get; set; }
public SegmentP SegmentP { get; set; }
}
public class BatchFooter
{
public int RegistryType { get; set; }
public int Counter { get; set; }
}
public class BatchHeader
{
public int RegistryType { get; set; }
public int CodeService { get; set; }
}
public class Batch
{
public BatchHeader BatchHeader { get; set; }
public List<Detail> Details { get; set; }
public BatchFooter BatchFooter { get; set; }
}
public class FileFooter
{
public int RegistryType { get; set; }
public int Counter { get; set; }
public int Total { get; set; }
}
public class FileHeader
{
public int RegistryType { get; set; }
public int CompanyCode { get; set; }
public DateTime GenerationDate { get; set; }
}
public class FileExample
{
public FileHeader FileHeader { get; set; }
public List<Batch> Batches { get; set; }
public FileFooter FileFooter { get; set; }
}
我想將整個文件加載到FileExample實體中,可能嗎?
var fileExample = new FileExample
{
FileHeader = new FileHeader
{
RegistryType = 1,
CompanyCode = 1,
GenerationDate = new DateTime(2016, 6, 1)
},
Batches = new List<Batch>
{
new Batch
{
BatchHeader = new BatchHeader
{
RegistryType = 2,
CodeService = 1
},
Details = new List<Detail>
{
new Detail
{
RegistryType = 3,
CodeCustomer = 1,
NominalValue = 10,
SegmentP = new SegmentP
{
RegistryType = "P",
Country = "Brazil"
}
}
},
BatchFooter = new BatchFooter
{
RegistryType = 4,
Counter = 1
}
}
},
FileFooter = new FileFooter
{
RegistryType = 5,
Counter = 1,
Total = 1
}
};
我是FileHelpers的新手,並且需要一個指導,例如在示例中,我注意到有Master / Detail選項,但是在我的示例中,文件具有更多Master / Detail類型。 感謝您的任何幫助
開箱即用,將FileHelpers用於具有復雜層次結構的格式是困難的。
FileHelpers提供了兩種處理多種記錄類型的方法: 主/詳細引擎和多記錄引擎 。
不幸的是,您可能同時需要兩種格式。 如果不進行進一步的編碼,將很難合並它們。
要清楚
MasterDetailEngine
頁眉/頁腳的情況,但目前僅支持一種明細類型和僅一層嵌套。 MultiRecordEngine
允許多種記錄類型。 但是,它將每一行都視為不相關的記錄,因此很難確定層次結構(即哪個明細記錄屬於哪個主記錄)。 我不確定FileHelpers是否在這里是正確的工具,但是如果您打算使其工作,可能值得研究以下內容:
解析文件一次以拆分批次。 您甚至可以使用FileHelpers來執行此操作。 然后,您將獲得一堆Batch[]
的記錄,其中包含字符串屬性BatchContents
。
然后枚舉Batch[]
並使用主/詳細引擎處理BatchContents
。
對於出口-相反。 將每個批次導出為主要明細BatchContents
,然后將其合並。
當然,如果您的頁眉和頁腳包含計數,控件總數,校驗和等 ,則還有更多工作要做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.