Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1610 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  DataSet + Compatibilité ascendante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

DataSet + Compatibilité ascendante

n°1600033
Koyomi
www.sebastiengilles.com
Posté le 16-08-2007 à 14:36:11  profilanswer
 

Bonjour,
 
Je travaille actuelement sur une appli cliente et je suis ammener a recuperer un System.byte[] qui n'est autre qu'un DataSet typé.
 
Pour vous donner une image voila la facon dont esttransformer coté serveur ce DataSet typé :
 

Code :
  1. DataSetLambda ds = new DataSetLambda();
  2. MemoryStream ms = new MemoryStream();
  3. ds.WriteXml(ms);
  4. ms.ToArray();


 
Je convertit donc coté client mon dataset de cette facon :
 

Code :
  1. MemoryStream ms = new MemoryStream(array);
  2. DataSetLambda dsTmp = new DataSetLambda();
  3. dsTmp.ReadXml(ms);


 
Le problème est simple, ce DataSet a évoluer dans sa structure et le client sur lequel je travaille doit etre compatible avec des anciennes version de ce DataSet.
 
Que me conseillez vous ?

mood
Publicité
Posté le 16-08-2007 à 14:36:11  profilanswer
 

n°1600047
MagicBuzz
Posté le 16-08-2007 à 14:56:46  profilanswer
 

Une surcharge de WriteXml et ReadXml ton objet DataSet qui prend en paramètre la version du format des données reçues en paramètre (ou alors le détecte automatiquement, à toi de voir ce qui est faisable).
Ensuite, en fonction d'une méthode private "OldLoader()" dans ta class, tu vas pouvoir prendre des décisions pour chaque élément modifié.
 
Genre, mettons que ton truc contienne un flux XML, avant tu recevais dans la version 1 : "age (int)" et maintenant dans la version 2 c'est un "birthday (datetime)" tu vas pouvoir faire ça dans ton OldLoader() :
 

Code :
  1. void OldLoader(int version, XmlDocument dom)
  2. {
  3.    Datetime birthday;
  4.  
  5.    switch (version) {
  6.        case 1:
  7.                int age = int.Parse(dom.DocumentElement.SelectSingleNode("age" ).Value);
  8.                birthday = Datetime.Now.AddYear(-age);
  9.                break;
  10.        case 2:
  11.                birthday = Datetime.Parse(dom.DocumentElement.SelectSingleNode("birthday" ).Value);
  12.                break;
  13.        DEFAULT :
  14.                throw new Exception(string.Format("Version non supportée : {0}", version));
  15.    }
  16. }


Message édité par MagicBuzz le 16-08-2007 à 14:58:50
n°1600056
Koyomi
www.sebastiengilles.com
Posté le 16-08-2007 à 15:03:21  profilanswer
 

Merci de ta réponse :)
 
je vais potasser et méditer tout cela ^^


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  DataSet + Compatibilité ascendante

 

Sujets relatifs
Compatibilité version PHP/mySQL - débutantJ2ME: Jeux téléphones mobiles , Règles de compatibilité ?
Problème de compatibilité[HTML/CSS]Probleme de compatibilite IE7 ...
[FLV] connaitre la compatibilité avec les versions du flash player[RESOLU]ListBox remplie avec un DataSet /2 champs dans le TextField
SVG et navigateurs -> tests de compatibilitéAvis site web + Problème Compatibilité
ASP.NET structure table datasetCompatibilité JScrollPane et Layout(null)
Plus de sujets relatifs à : DataSet + Compatibilité ascendante


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)