Im .NET -Objekt ist die
-Schinschnittstelle von entscheidender Bedeutung, um andere Komponentenattribute zu benachrichtigen. Die manuelle Implementierung erfordert für jedes Attribut Vorfälle, die möglicherweise umständlich sein können. In diesem Artikel wird die Methode zur Vereinfachung dieses Prozesses erläutert. INotifyPropertyChanged
PropertyChanged
vereinfachen
Eine gemeinsame Methode besteht darin, eine Hilfsmethode zu erstellen, z. B. , um mit dem Modellcode des Vorfalls umzugehen:
SetField()
Dies vereinfacht das Attribut zu:
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"); } } }
<用> Verwenden Sie C#Verbesserung, um
private string name; public string Name { get { return name; } set { SetField(ref name, value); } }
c# 5 eingeführte Attribute, sodass automatisch abschließend Attributname: ermöglicht werden:
CallerMemberName
Mit dieser Verbesserungsfunktion können Sie die Attributimplementierung weiter vereinfachen:
protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null) { // ... }
Die höhere Version von C#bietet mehr Verbesserungsfunktionen, um die Implementierung zu vereinfachen:
set { SetField(ref name, value); }
<> C# 7.0:
protected void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }
<> C# 8.0 und kann für Luftzitate verwendet werden:
protected void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null) { // ... } private string name; public string Name { get => name; set => SetField(ref name, value); }
erheblich vereinfacht, so dass es in der modernen Version von C#keine mühsame Aufgabe mehr ist.
Das obige ist der detaillierte Inhalt vonWie kann ich die Implementierung von InotifyPropertyChanged in C#vereinfachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!