Maison > développement back-end > C++ > Comment puis-je simplifier la mise en œuvre inotifyPropertyChanged en C #?

Comment puis-je simplifier la mise en œuvre inotifyPropertyChanged en C #?

Mary-Kate Olsen
Libérer: 2025-02-02 09:26:09
original
1007 Les gens l'ont consulté

How Can I Simplify INotifyPropertyChanged Implementation in C#?

Implémentation automatisée inotifyPropertyChanged

Dans l'objet .NET, l'interface

est essentielle pour informer d'autres attributs de composants. L'implémenter manuellement lui nécessite des incidents

pour chaque attribut, qui peuvent être lourds. Cet article traite de la méthode de simplification de ce processus. INotifyPropertyChanged PropertyChanged Simplifier

Une méthode commune consiste à créer une méthode auxiliaire, telle que pour gérer le code du modèle de l'incident:

SetField() Cela simplifie l'attribut à:

public class Data : INotifyPropertyChanged {
    // ...
    protected bool SetField<T>(ref T field, T value, string propertyName) {
        if (EqualityComparer<T>.Default.Equals(field, value)) return false;
        field = value;
        OnPropertyChanged(propertyName);
        return true;
    }

    // 使用SetField()的属性实现
    private string name;
    public string Name {
        get { return name; }
        set { SetField(ref name, value, "Name"); }
    }
}
Copier après la connexion

<用> Utilisez C # Amélioration pour améliorer

private string name;
public string Name {
    get { return name; }
    set { SetField(ref name, value); }
}
Copier après la connexion

C # 5 Introduit Attributs, permettant le nom d'attribut inférieur automatique:

Avec cette fonction d'amélioration, vous pouvez simplifier davantage l'implémentation de l'attribut: CallerMemberName

protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null) {
    // ...
}
Copier après la connexion
La version supérieure de C # fournit plus de fonctions d'amélioration pour simplifier l'implémentation:

<> C # 6.0:
set { SetField(ref name, value); }
Copier après la connexion

<> C # 7.0:

protected void OnPropertyChanged([CallerMemberName] string propertyName = null) {
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Copier après la connexion
<> C # 8.0 et peut être utilisé pour les citations d'air:

Ces améliorations ont considérablement simplifié la réalisation de
protected void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null) {
    // ...
}

private string name;
public string Name {
    get => name;
    set => SetField(ref name, value);
}
Copier après la connexion
, de sorte que ce n'est plus une tâche fastidieuse dans la version moderne de C #.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal