簡體   English   中英

使用FileHelpers讀寫各種類型的文件

[英]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是否在這里是正確的工具,但是如果您打算使其工作,可能值得研究以下內容:

  1. 解析文件一次以拆分批次。 您甚至可以使用FileHelpers來執行此操作。 然后,您將獲得一堆Batch[]的記錄,其中包含字符串屬性BatchContents

  2. 然后枚舉Batch[]並使用主/詳細引擎處理BatchContents

  3. 對於出口-相反。 將每個批次導出為主要明細BatchContents ,然后將其合並。

當然,如果您的頁眉和頁腳包含計數,控件總數,校驗和 ,則還有更多工作要做

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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