J'ai une classe qui est sérialisée vers et à partir d'un fichier XML lorsque l'utilisateur a décidé d'ouvrir ou de sauvegarder. J'essaye d'ajouter la fonctionnalité typique où quand ils essayent de fermer le formulaire avec des changements non-sauvés le formulaire les avertit et leur donne l'option d'enregistrer avant la fermeture.Suivi des objets modifiés (non enregistrés)
J'ai ajouté une propriété HasUnsavedChanges
à ma classe, que ma fiche vérifie avant de la fermer. Cependant, il est un peu ennuyeux que mes propriétés ont changé de quelque chose comme ça ..
public string Name
{
get;
set;
}
à cette ...
private string _Name;
public string Name
{
get
{
return _Name;
}
set
{
this._Name = value;
this.HasUnsavedChanges = true;
}
}
Y at-il une meilleure façon de suivre les modifications apportées à une instance d'une classe ? Par exemple, y a-t-il une manière standard de "hacher" une instance d'une classe dans une valeur que je peux utiliser pour comparer la version la plus récente avec la version sauvegardée sans avoir à copier toutes les propriétés de la classe?
+1, thats un beau morceau de code. –
Veuillez supprimer le retour sur la deuxième surcharge SetProperty. – JCallico
@JCallico: Bonne prise. Le code que j'ai adapté pour cette réponse retourne si la propriété a été modifiée, mais comme nous la stockons dans une variable membre pour cette question, j'ai utilisé 'void' à la place. J'ai enlevé le 'retour'. –