vereinfachte InotifyPropertyChanged Implementierung in C#
INotifyPropertyChanged
ist für die Datenbindung und die Änderungsmeldungen von Eigenschaften wesentlich, aber manuelle Implementierung kann umständlich sein. Während eine vereinfachte Syntax wie {get; set; notify;}
ideal wäre, ist sie nicht in C#eingebaut. Lassen Sie uns nach Möglichkeiten untersuchen, um den Prozess zu optimieren.
Ein Ansatz beinhaltet eine Basisklasse mit einer generischen SetField
-Methode:
<code class="language-csharp">public class Data : INotifyPropertyChanged { protected virtual void OnPropertyChanged(string propertyName); protected bool SetField<T>(ref T field, T value, string propertyName); public string Name { get { return name; } set { SetField(ref name, value, "Name"); } } // ... other properties }</code>
Dies reduziert die Kesselplatte der Eigenschaft Deklaration. C# 5's CallerMemberName
Attribut vereinfacht dies weiter:
<code class="language-csharp">protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null); public string Name { get { return name; } set { SetField(ref name, value); } }</code>
c# 6 und später zusätzliche Verbesserungen für noch prägnanteres Code.
automatisieren der Codegenerierung
Betrachten Sie für die vollständige Automatisierung Tools wie PropertyChanged.Fody
. Während eine externe Abhängigkeit erforderlich ist, beseitigt dies das manuelle Ereignisereignis vollständig. Dies ist eine leistungsstarke Option für größere Projekte. Die Auswahl zwischen manueller Optimierung (unter Verwendung einer Basisklasse) und automatisierter Codegenerierung hängt von der Projektgröße und der Präferenz für externe Abhängigkeiten ab. PropertyChanged
Das obige ist der detaillierte Inhalt vonVereinfachung von InotifyPropertyChanged: Gibt es einfachere Möglichkeiten als manuelle Implementierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!