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