Erweiterungsmethoden für AppSettings
Aus meinem alten Blog (2012–2017). Der Text steht so, wie ich ihn damals geschrieben habe.
Vor kurzem hatte ich ausprobiert, ob der Zugriff auf die Einstellungen einer Anwendung vereinfacht werden kann. Mit den Einstellungen meine ich die bekannten AppSettings, die in der App.config gespeichert werden. In der Regel erfolgt der Zugriff über den ConfigurationManager und genauer gesagt über die Anweisung ConfigurationManager.AppSettings[key]. Zurückgeliefert wird immer eine Zeichenkette.
Wirklich aufwändig ist das natürlich nicht, aber unter Zuhilfenahme von Erweiterungsmethoden kann der Zugriff anders gestaltet werden. Die Entscheidung, ob das einfacher oder besser ist, überlasse ich dem wehrten Leser.
Die Idee dahinter ist ganz simpel. Über eine Erweiterungsmethode kann die String-Klasse erweitert werden. Das erlaubt es, beliebige Zeichenketten im Code direkt als Schlüssel für eine Einstellung zu verwenden. Das folgende Gist(öffnet in neuem Tab) zeigt die Implementierung für eine generische Erweiterungsmethode. In meinem Beispielprojekt habe ich noch eine nicht generische Variante implementiert, die noch ein paar Zeilen weniger enthält und einfach die Zeichenkette zurück gibt.
Code auf GitHub Gist: AppSettings.cs →(öffnet in neuem Tab)
Die Implementierung ist dabei recht einfach und relativ unspannend. Wenn der Schlüssel existiert, wird der Inhalt der Einstellung zurückgeliefert. Damit auch immer der angegebene Typ zurückgeliefert werden kann, wird das Setting über den TypeDescriptor umgewandelt. Das Verfahren beziehungsweise die Implementierung dazu habe ich schon in einem vorherigen Blog-Artikel beschrieben.
Durch diese Erweiterungsmethode kann nun sehr einfach auf eine Einstellung zugegriffen werden. Ein Aufruf von "StringSetting".AppSetting<string>() reicht beispielsweise aus, um auf das Setting mit dem Namen StringSetting zuzugreifen und das Ergebnis als String zurück zu bekommen. Auch andere Typen sind selbstverständlich möglich, wie beispielsweise Guids, auf die über "GuidSetting".AppSetting<Guid>() zugegriffen werden kann.
Die Frage, die ich mir bei der Implementierung gestellt habe, ist, ob diese Erweiterungsmethoden eine gute Idee sind. Den Zugriff auf eine Einstellung finde ich dadurch sehr elegant. Ob ich aber die String-Klasse beziehungsweise eine Zeichenkette im Code ständig auch damit assoziieren möchte, dass ich die Methode AppSetting aufrufen kann, weiß ich noch nicht. Ich denke, ich werde die Erweiterungsmethoden im nächsten Projekt mal ausgiebiger testen.