2010-05-23 13 views
1

Je dois lire/écrire des fichiers, en suivant un format fourni par une spécification tierce. La spécification elle-même est assez simple: elle indique la position et la taille des données qui seront sauvegardées dans le fichier. Par exemple:Position de l'élément de carte dans le fichier de données dans la propriété de classe

Position  Size  Description 
-------------------------------------------------- 
0001   10   Device serial number 
0011   02   Hour 
0013   02   Minute 
0015   02   Second 
0017   02   Day 
0019   02   Month 
0021   02   Year 

La liste est très longue, il a environ 400 éléments. Mais beaucoup d'entre eux peuvent être combinés. Par exemple, heure, minute, seconde, jour, mois et année peuvent être combinés dans un seul objet DateTime. J'ai divisé les éléments en environ 4 catégories, et créé des classes séparées pour contenir les données. Donc, au lieu d'une grande structure représentant les données, j'ai quelques classes plus petites. J'ai également créé différentes classes pour lire et écrire les données.

Le problème est: comment mapper les positions dans le fichier aux propriétés des objets, de sorte que je n'ai pas besoin de répéter les valeurs dans la classe de lecture/écriture? Je pourrais utiliser certains attributs personnalisés et les récupérer par réflexion. Mais puisque le code fonctionnera sur des appareils avec peu de mémoire et de processeur, il serait bon de trouver un autre moyen. Mon code de lecture en cours ressemble à ceci:

public void Read() { 
    DataFile dataFile = new DataFile(); 
    // the arguments are: position, size 
    dataFile.SerialNumber = ReadLong(1, 10); 
    //... 
} 

Toutes les idées sur celui-ci?

Répondre

0

Les attributs personnalisés allaient être ma suggestion, mais je vois que vous avez déjà pensé à cela. En dehors de cela, ma seule autre suggestion serait de stocker le mapping dans, disons, un fichier XML.