2009-05-13 3 views
1

J'ai une application Windows Form construite sur un modèle de données et une application Windows Mobile qui contient un modèle de données similaire. Lorsque les utilisateurs entrent des informations dans l'application mobile, je les synchronise avec les données de l'application principale. Ceci est réalisé en ayant essentiellement les définitions de classe utilisées dans l'application mobile dans l'application principale, puis en codant la synchronisation entre les deux modèles différents.Synchronisation de différentes versions d'objets

Je suis maintenant à un point où l'application mobile a été améliorée et une nouvelle version créée alors quand la synchronisation se produit dans l'application principale, elle pourrait être synchronisée à partir de mobiles v1 ou v2 qui ont différents modèles de données.

Quelle est la meilleure façon de réaliser la synchronisation. Un exemple peut être que l'application principale et la v2 de l'application mobile contiennent une date de commande pour une commande qui doit être synchronisée. Si vous synchronisez à partir de la version 1 de l'application mobile qui ne contient pas cette propriété, elle doit être ignorée.

Répondre

1

Je sous-classe de l'objet modèle à une version 2:

public class DataObject 
{ 
    public string CustomerName { get; set; } 
} 

public class DataObjectVersion2 : DataObject 
{ 
    public DataTimeOrderDate { get; set; } 
} 

Puis, dans les WinForms application, vous pouvez simplement vérifier le type de déterminer le volume de données est disponible:

public void SyncDataFromMobile(DataObject data) 
{ 
    this.WinformsData = new WinFormsDataObject(); 

    this.WinFormsData.CustomerName = data.CustomerName; 

    DataObjectVersion2 data2 = data as DataObjectVersion2; 

    if (data2 != null) 
    { 
     SyncDataFromMobileVersion2(data2); 
    } 
} 

private void SyncDataFromMobileVersion2(DataObjectVersion2 data) 
{ 
    this.WinFormsData.OrderDate = data.OrderDate; 
} 
+0

Cela fonctionne - il peut devenir involontairement quand il y a beaucoup de versions des objets et peut-être besoin de penser quand une certaine version d'un obejct dépend d'une certaine version d'un autre objet –