4

我一直在寻找一种方法来允许我的 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 映射类中包含数组的方法?

4

2 回答 2

1

FileHelpers 记录类需要公共字段。记录类不应被视为应遵循最佳编码实践的普通 C# 类;相反,它只是描述导入文件结构的语法。

FileHelpers 的推荐过程是遍历结果Example[]数组并将您需要的字段映射到更普通的类(使​​用属性而不是公共字段)。此时,您可以将 H1-H4 值复制到数组属性中。

于 2012-11-02T00:51:31.023 回答
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;}
于 2008-11-05T06:46:57.640 回答