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?