Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Melaksanakan INotifyPropertyChanged dengan Selamat untuk Pemberitahuan Perubahan Nilai Harta?

Bagaimana untuk Melaksanakan INotifyPropertyChanged dengan Selamat untuk Pemberitahuan Perubahan Nilai Harta?

Linda Hamilton
Lepaskan: 2024-12-30 13:51:10
asal
212 orang telah melayarinya

How to Safely Implement INotifyPropertyChanged for Property Value Change Notifications?

Cara Memberitahu Perubahan Nilai Harta Menggunakan Peristiwa

Untuk melihat perubahan nilai harta, anda boleh menggunakan antara muka INotifyPropertyChanged, yang termasuk acara PropertyChanged . Acara ini boleh dilanggan oleh pengguna untuk mengesan perubahan dalam hartanah tertentu.

public interface INotifyPropertyChanged
{
    event PropertyChangedEventHandler PropertyChanged;
}
Salin selepas log masuk

Pelaksanaan Selamat INotifyPropertyChanged dengan Acara

Sementara respons Richard sebelum ini memperkenalkan pelaksanaan yang tidak selamat , berikut ialah versi disemak yang memastikan urutan keselamatan:

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");
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
}
Salin selepas log masuk

Pelaksanaan ini:

  • Memusatkan kaedah pemberitahuan penukaran harta untuk aplikasi mudah pada berbilang hartanah.
  • Mengelakkan keadaan perlumbaan dengan membuat salinan daripada perwakilan PropertyChanged.
  • Mematuhi sepenuhnya INotifyPropertyChanged antara muka.

Peristiwa Perubahan Harta Khusus Tambahan

Untuk butiran tambahan, anda boleh menentukan acara berasingan untuk sifat tertentu, seperti:

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

public event EventHandler ImageFullPathChanged;
Salin selepas log masuk

Dalam penetap hartanah, gunakan kedua-dua acara OnPropertyChanged umum dan khusus Acara OnImageFullPathChanged.

Memudahkan Pemerolehan Nama Harta (C# 4.5 Sahaja)

Akhir sekali, untuk C# 4.5 dan ke atas, gunakan CallerMemberAttribute untuk menghapuskan nama hartanah secara automatik memerlukan rentetan manual literal:

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

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan INotifyPropertyChanged dengan Selamat untuk Pemberitahuan Perubahan Nilai Harta?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan