Es gibt immer wieder die Notwendigkeit, dass du den Namen einer Klasse, einer Methode, einer Variablen, … ausgibst. Insbesondere für das Schreiben von Log-Einträgen oder um einer Exception mehr Details zugeben. In C# 6.0 wurde dafür ein neuer Operator eingeführt. Dabei handelt es sich um den nameof
Operator.
Ein weiteres Anwendungsszenario ergibt sich für ViewModels in WPF. Wie du im Quelltext zum LernMoment “Command.CanExecute” sehen kannst, ist eine Realisierungsmöglichkeit für RaisePropertyChanged
, dass der Name der Eigenschaft die sich geändert hat als string
übergeben wird. Obwohl diese Variante recht sicher ist, weil im ViewModelBase
überprüft wird, ob die Klasse tatsächlich eine Eigenschaften mit dem Namen im string
hat, bekommst du spätestens beim Refactoring Probleme.
Wenn du ein ViewModelBase
wie hier verwendest, dann sehen die Eigenschaften in deinen ViewModels häufig so aus:
public int IntEigenschaft {
set {
if (intEigenschaft != value) {
intEigenschaft = value;
RaisePropertyChanged("IntEigenschaft");
}
}
}
Mit dem nameof
Operator kannst du nun den Aufruf von RaisePropertyChanged
verbessern: RaisePropertyChanged(nameof(IntEigenschaft))
.
Interessante Links
- Der Referenzartikel auf MSDN bietet sowohl eine Beschreibung wie auch einige Beispiele.
- Für Heise-Developer hat der Dotnet-Doktor einen Artikel zu diesem Thema geschrieben.
Viel Spaß beim Ausgeben der Namen deiner Klassen, Eigenschaften, Methoden, …
Jan
PS: Hast du Fragen zu diesem InspirationsMoment, oder anderen Themen auf LernMoment.de? Dann schicke mir eine E-Mail