Maison > développement back-end > C++ > Comment déclencher un événement personnalisé lorsqu'une valeur de propriété change en C# ?

Comment déclencher un événement personnalisé lorsqu'une valeur de propriété change en C# ?

Linda Hamilton
Libérer: 2025-01-01 01:16:10
original
990 Les gens l'ont consulté

How to Raise a Custom Event When a Property Value Changes in C#?

Comment déclencher un événement lorsque la valeur d'une propriété change

Vous avez une propriété nommée ImageFullPath1 que vous souhaitez déclenche un événement chaque fois que sa valeur change. Bien que vous sachiez utiliser l'interface INOtifyPropertyChanged, vous préférez utiliser des événements à cette fin.

L'interface INOtifyPropertyChanged est, en fait, implémentée avec des événements. Il a un seul membre, PropertyChanged, qui est un événement auquel les consommateurs peuvent souscrire.

Mise en œuvre sécurisée :

Le code suivant L'extrait démontre une implémentation sécurisée de l'interface INOtifyPropertyChanged avec un événement supplémentaire pour une propriété spécifique. (ImageFullPath) :

public class MyClass : INotifyPropertyChanged
{
    private string imageFullPath;

    protected void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, e);
    }

    protected void OnPropertyChanged(string propertyName)
    {
        OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
    }

    public string ImageFullPath
    {
        get { return imageFullPath; }
        set
        {
            if (value != imageFullPath)
            {
                imageFullPath = value;
                OnPropertyChanged("ImageFullPath");
            }
        }
    }

    protected void OnImageFullPathChanged(EventArgs e)
    {
        EventHandler handler = ImageFullPathChanged;
        if (handler != null)
            handler(this, e);
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public event EventHandler ImageFullPathChanged;
}
Copier après la connexion

Cette implémentation garantit les éléments suivants :

  • Méthodes abstraites de notification de changement de propriété pour une application facile à d'autres propriétés
  • Copie le délégué PropertyChanged avant de l'invoquer pour éviter les conditions de concurrence
  • Mise en œuvre correcte du INotifyPropertyChanged interface

CallerMemberAttribute dans .NET 4.5 :

Pour .NET 4.5 et supérieur, le CallerMemberAttribute peut être utilisé pour éliminer la chaîne codée en dur pour les noms de propriétés dans le code source :

protected void OnPropertyChanged(
    [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

public string ImageFullPath
{
    get { return imageFullPath; }
    set
    {
        if (value != imageFullPath)
        {
            imageFullPath = value;
            OnPropertyChanged();
        }
    }
}
Copier après la connexion

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