2008-11-04 59 views
4

我一直在寻找一种方法来让我的FileHelpers映射类的一个元素成为一个特定长度的数组。在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

我不知道有关该工具的任何问题,但(假设它不是工具的限制)我真的怀疑公有领域的智慧。属性也将让您有机会到垫片的值:

[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;} 
1

FileHelpers记录类需要公共领域。记录类不应该被认为是一个正常的C#类,它应该遵循最佳编码实践;相反,它只是一个描述导入文件结构的语法。

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