我一直在寻找一种方法来允许我的FileHelpers映射类的一个元素成为特定长度的数组。
例如,我有一个这样的课程:
[DelimitedRecord(",")]
public class Example
{
public string code;
public int month;
public int day;
public double h1;
public double h2;
public double h3;
public double h4;
}
值h1-h4实际上更有意义,因为数组简称为'h'。它还可以使处理文件更容易一些。 我也知道我正在阅读的文件将始终包含这些,并且只有这些字段。
有没有人想出在FileHelper映射类中包含数组的方法?
答案 0 :(得分:1)
FileHelpers记录类需要公共字段。记录类不应被视为应遵循最佳编码实践的普通C#类;相反,它只是描述导入文件结构的语法。
使用FileHelpers的推荐过程是循环生成的Example[]
数组,并将您需要的字段映射到更正常的类(使用属性而不是公共字段)。此时,您可以将H1-H4值复制到数组属性中。
答案 1 :(得分:0)
我对这个工具一无所知,但是(假设它不是工具的限制)我真的怀疑公共领域的智慧。属性还可以让您有机会填充值:
[DelimitedRecord(",")]
public class Example
{
public string Code {get;set;}
public int Month {get;set;}
public int Day {get;set;}
private readonly double[] h = new double[4];
public double H1 {get {return h[0];} set {h[0] = value;}}
public double H2 {get {return h[1];} set {h[1] = value;}}
public double H3 {get {return h[2];} set {h[2] = value;}}
public double H4 {get {return h[3];} set {h[3] = value;}}
}
再次 - 我不知道该工具是否支持这一点,但它将是一种可行的实现方式。当然,“h”值也会像直接成员一样(实际上,效率稍高 - 堆上没有数组,也没有去引用):
public double H1 {get;set;}
public double H2 {get;set;}
public double H3 {get;set;}
public double H4 {get;set;}