Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya dapat memudahkan pelaksanaan InotifyPropertyChanged di C#?

Bagaimanakah saya dapat memudahkan pelaksanaan InotifyPropertyChanged di C#?

Mary-Kate Olsen
Lepaskan: 2025-02-02 09:26:09
asal
977 orang telah melayarinya

How Can I Simplify INotifyPropertyChanged Implementation in C#?

Pelaksanaan InoTifyPropertyChanged automatik

Dalam objek .NET, antara muka adalah penting untuk memberitahu atribut komponen lain. Melaksanakannya secara manual memerlukan insiden

untuk setiap atribut, yang mungkin rumit. Artikel ini membincangkan kaedah memudahkan proses ini.

INotifyPropertyChanged memudahkan PropertyChanged

Kaedah biasa adalah untuk membuat kaedah tambahan, seperti untuk menangani kod model kejadian:

Ini memudahkan atribut kepada: SetField()

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"); }
    }
}
Salin selepas log masuk
<用> Gunakan C#Penambahbaikan untuk meningkatkan

private string name;
public string Name {
    get { return name; }
    set { SetField(ref name, value); }
}
Salin selepas log masuk
C# 5 diperkenalkan

atribut, yang membolehkan automatik menyimpulkan nama atribut:

Dengan fungsi peningkatan ini, anda dapat memudahkan pelaksanaan atribut lagi:

CallerMemberName

versi C#yang lebih tinggi menyediakan lebih banyak fungsi peningkatan untuk memudahkan pelaksanaan:
protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null) {
    // ...
}
Salin selepas log masuk

<> c# 6.0:

set { SetField(ref name, value); }
Salin selepas log masuk

<> c# 7.0:

<> c# 8.0 dan boleh digunakan untuk petikan udara:

protected void OnPropertyChanged([CallerMemberName] string propertyName = null) {
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Salin selepas log masuk

Penambahbaikan ini telah mempermudahkan kesedaran , supaya ia tidak lagi menjadi tugas yang membosankan dalam versi moden C#.

Atas ialah kandungan terperinci Bagaimanakah saya dapat memudahkan pelaksanaan InotifyPropertyChanged di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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