En bref… Live Templates Property Changed pour Resharper

PropertyChangedTitle

Cet article est destiné a tous les accrocs de Resharper et plus particulièrement ce qui se servent constamment du pattern MVVM.

Je vous propose aujourd’hui deux Live Templates (snippets) vous permettant de générer plus rapidement le code nécessaire à la gestion des traçages des propriétés ce qui est indispensable avec le pattern MVVM lors de l’implémentation de INotifyPropertyChanged sur les ViewModels.

Le premier associé au raccourci invpch permet de générer une méthode pour déclencher l’événement PropertyChanged dont voici le code :

1
2
3
4
5
6
7
8
9
10
11
private void InvokePropertyChanged<TProperty>(Expression<Func<$BaseClass$, TProperty>> expression)
{
	PropertyChangedEventHandler handler = this.PropertyChanged;
	if (handler == null) return;
 
	MemberExpression memberExpression = expression.Body as MemberExpression;
	if (memberExpression == null || memberExpression.Member.MemberType != MemberTypes.Property)
		throw new InvalidOperationException("NotifyPropertyChanged has to be called from pulic property");
 
	handler(this, new PropertyChangedEventArgs(memberExpression.Member.Name));
}

Enfin le deuxième permet de générer une propriété tirant parti de cette méthode, le raccourci est propch :

1
2
3
4
5
6
7
8
9
10
private $Type$ $FieldName$;
public $Type$ $PropertyName$
{
	get { return this.$FieldName$; }
	set
	{
	    this.$FieldName$ = value;
	    this.InvokePropertyChanged(p => p.$PropertyName$);
	}
}

J’utilise une astuce assez connue basée sur les expressions LINQ afin d’utiliser un typage fort pour le nom de la propriété, ce qui s’avère très pratique pour détecter une erreur dans le nom de la propriété lors de la compilation.

Pour télécharger ces Live Templates, rendez-vous ici.

N’hesitez pas à faire part de vos avis si vous en avez sur ces Lives Templates.

See U.

Publié dans .NET, Développement, En bref....

Classé dans , , , .


0 réponses

Suivez la conversation, abonnez-vous au flux RSS des commentaires..



Un peu de HTML est permis

ou héberger un rétrolien.