繁体   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