Kannst du den Namen einer Klasse, Methode, ... ausgeben?

Kannst du den Namen einer Klasse, Methode, ... ausgeben?

Von Jan Suchotzki

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)).

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