Simplifier l'inotifypropertychanged implémentation en c #
INotifyPropertyChanged
est essentiel pour la liaison des données et les notifications de changement de propriété, mais la mise en œuvre manuelle peut être lourde. Bien qu'une syntaxe simplifiée comme {get; set; notify;}
soit idéale, elle n'est pas intégrée à C #. Explorons les moyens de rationaliser le processus.
Une approche implique une classe de base avec une méthode générique SetField
:
<code class="language-csharp">public class Data : INotifyPropertyChanged { protected virtual void OnPropertyChanged(string propertyName); protected bool SetField<T>(ref T field, T value, string propertyName); public string Name { get { return name; } set { SetField(ref name, value, "Name"); } } // ... other properties }</code>
Cela réduit la baillée de déclaration de propriété. L'attribut C # 5 de C # 5 simplifie encore: CallerMemberName
<code class="language-csharp">protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null); public string Name { get { return name; } set { SetField(ref name, value); } }</code>
GÉNÉRATION DE CODE AUTOMATINGE
Pour une automatisation complète, considérez des outils comme. Tout en nécessitant une dépendance externe, elle élimine entièrement le manuel PropertyChanged.Fody
d'événements. Il s'agit d'une option puissante pour les projets plus grands. Le choix entre l'optimisation manuelle (en utilisant une classe de base) et la génération de code automatisée dépend de la taille et de la préférence du projet pour les dépendances externes. PropertyChanged
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!