Ich habe einige konstante Zeichenfolgen, die in mehreren Klassen benötigt werden. Wie kann ich diese Konstanten auf eine Weise speichern und abrufen, die diese erforderlichen Kriterien erfüllt:Wo gebe ich in einer C# -Anwendung gemeinsame Konstanten ein?
Constant
nicht Namespace.Constant
)Keine der Lösungen, die ich treffen gefunden habe bisher alle Kriterien:
- sie in jeder Klasse Duplizieren sie gebraucht werden in (verletzt Kriterium # 1).
- Speichern Sie sie in einer separaten statischen Klasse, die referenziert wird wo immer benötigt (ein bisschen wie eine C-style Header-Datei, verletzt Kriterium # 3).
- Setzen Sie sie in eine der Klassen, in denen sie verwendet werden, und verweisen Sie auf diese Klasse, wenn sie woanders benötigt werden (dies scheint eine schlechte Idee zu sein, da sie Zirkelverweise erstellen könnte und Kriterium 3 verletzt).
- Setzen Sie sie in app.config und holen Sie sie wann immer sie benötigt werden (Dies scheint Stilkonventionen zu brechen, da Nichtkonfigurationsdaten in einer Konfigurationsdatei gespeichert sind und eine Änderung der Konfigurationsdatei die Anwendungslogik zerstören könnte Kriterien # 2).
Gibt es eine Lösung in C#, die alle Kriterien erfüllt?
Option 2 erfordert Fremd Code, wo die Konstanten benötigt werden ('StaticClass.Constant' statt nur' Constant'). Gibt es einen Weg dahin? – slbelden
@slbelden Wenn Sie C# 6 (VS 2014 oder neuer) verwenden, dann ja. Sie können 'static YourNamespace.StaticClass;' am Anfang Ihrer Datei verwenden. Dann werden alle statischen Member von 'StaticClass 'so ausgeführt, als ob sie für die Datei im Geltungsbereich sind. –
Willkommen bei OOP;) Natürlich gibt es einen Weg um beides zu nutzen. In # 1 den Wert von # 2 zuweisen. Ich bevorzuge auch # 2, aber es ist hauptsächlich auf der Grundlage von Meinungen ... –