Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya dapat memudahkan pelaksanaan InotifyPropertyChanged di C#?
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()
<code class="language-csharp">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"); } } }</code>Gunakan C#Penambahbaikan untuk meningkatkan
<code class="language-csharp">private string name; public string Name { get { return name; } set { SetField(ref name, value); } }</code>C# 5 diperkenalkan
atribut, yang membolehkan automatik menyimpulkan nama atribut:
Dengan fungsi peningkatan ini, anda dapat memudahkan pelaksanaan atribut lagi:
CallerMemberName
<code class="language-csharp">protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null) { // ... }</code>
c# 6.0:
<code class="language-csharp">set { SetField(ref name, value); }</code>
c# 7.0:
c# 8.0 dan boleh digunakan untuk petikan udara:
<code class="language-csharp">protected void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }</code>
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!