Le design pattern MVVM est quelques chose de formidable, il faut bien l'avouer :)
Comme vous le savez certainement, un de ses fondements principaux repose sur l'interface INotifyPropertyChanged, qui va nous permettre de lever l'évènement PropertyChangedEventHandler et notifier notre View du changement opéré sur la propriété en question.
La petite astuce présentée ici consiste à factoriser un peu notre code, notamment lorsque l'on utilise pas de framework "tout en un" style MVVM Light Toolkit afin d'éviter une certaine redondance, en l'occurrence l'implémentation du setter des propriétés du ViewModel. L'idée est donc de créer une classe abstraite dont hériteront tous nos ViewModel (best practice) et d'y adjoindre une petite modification utile :
Je passerai l'explication de l'implémentation de la méthode OnNotifyPropertyChanged, qui est ici standard. Celle-ci est toutefois en access mode privé car on ne doit plus y accéder directement, on passera donc par l'appel à la méthode SetValueAndNotifyChanged<T>, qui fera l'essentiel du travail.
Voici comment l'utiliser dans notre ViewModel :
On vois clairement ici la simplification : le code de SetValueAndNotifyChanged<T> qui devait se trouver dans le setter de la propriété UniqueID est remplacé par un simple appel à la méthode de BaseViewModel. On note le passage par référence, très important, de la variable _uniqueID, afin que bien entendu celle-ci puisse être modifié par SetValueAndNotifyChanged<T>.
Encore un exemple très simple de refactorisation de code. Si vous avez d'autres astuces de refactoring à ce sujet, n'hésitez pas à les partager en commentaires ! :)






Derniers commentaires