2008-11-04 7 views
4

J'ai cherché un moyen de permettre à un élément de ma classe de mappage FileHelpers d'être un tableau de longueur spécifique.Utilisation d'un tableau dans la classe de mappage FileHelpers

Par exemple, j'ai une classe comme ceci:

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

Les valeurs comme un tableau h1-h4 serait vraiment plus logique appelé simplement « h ». Cela rendrait le traitement du fichier un peu plus facile aussi. Je sais aussi que le fichier que je suis en train de lire aura toujours ces champs, et seulement ceux-ci.

Est-ce que quelqu'un a trouvé un moyen d'inclure des tableaux dans vos classes de mappage FileHelper?

Répondre

0

Je ne sais rien de l'outil en question, mais (en supposant que ce ne soit pas une limitation de l'outil) vraiment douter de la sagesse des domaines publics. Propriétés seraient également vous donner la possibilité de caler les valeurs:

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

Encore une fois - Je ne sais pas si l'outil soutiendrait, mais ce serait un moyen viable de mise en œuvre. Bien sûr, les « h » valeurs feraient tout aussi bien (en fait, un peu plus efficace - aucun tableau sur le tas et pas de référence) en tant que membres directs:

public double H1 {get;set;} 
    public double H2 {get;set;} 
    public double H3 {get;set;} 
    public double H4 {get;set;} 
1

FileHelpers cours d'enregistrement nécessitent des champs publics. La classe d'enregistrement ne devrait pas être considérée comme une classe C# normale qui devrait suivre les meilleures pratiques de codage; c'est plutôt une syntaxe pour décrire la structure d'un fichier d'importation. La procédure recommandée avec FileHelpers serait de faire une boucle dans le tableau Example[] résultant et de mapper les champs dont vous avez besoin à une classe plus normale (avec des propriétés au lieu de champs publics). À ce stade, vous pouvez copier vos valeurs H1-H4 dans une propriété de tableau à la place.

Questions connexes