Pelaksanaan InoTifyPropertyChanged automatik
Dalam objek .NET, antara muka adalah penting untuk memberitahu atribut komponen lain. Melaksanakannya secara manual memerlukan insiden
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"); } } }
private string name; public string Name { get { return name; } set { SetField(ref name, value); } }
atribut, yang membolehkan automatik menyimpulkan nama atribut:
Dengan fungsi peningkatan ini, anda dapat memudahkan pelaksanaan atribut lagi:
CallerMemberName
protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null) { // ... }
<> c# 6.0:
set { SetField(ref name, value); }
<> 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)); }
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!