Wo zum speichern von Konfigurations-Informationen
Ich habe eine Konsolenanwendung, die ich bin Umbau von C auf C#. Diese Anwendung muss in der Lage sein, zur Unterstützung der legacy-Methode der Speicherung von Informationen, wie Parameter aus der Befehlszeile und Parameter aus einer Datei (die so genannte system-Parameter), die Anpassung von jedem ausgeführt werden. Die system-Parameter-Datei im plain-text mit einem einfachen Schlüssel /Wert-Struktur.
Meine Fragen sind:
- Sollte ich kombinieren diese verschiedenen Parameter in einer einzigen Konfigurations-Objekt?
- Wie würde ich es nennen dieses Objekt Konfiguration aus dem code, um Parameter zu hinterlegen?
- Wie würde ich es nennen das configuration-Objekt aus der code zum abrufen der Parameter?
- Sollte dieses Objekt werden stark typisiert?
- Ich muss Zugriff auf diese Struktur aus einer Menge von verschiedenen stellen im code, was ist der eleganteste Weg, um die Werte abzurufen, die in das Objekt, ohne das Objekt selbst überall herum?
Habe ich das Gefühl, dass es eine einzelne, stark typisierte Objekt-und, dass es eine instanziierte Objekt, das abgerufen wird von einem repository mit einer statischen retrieval-Methode, aber ich möchte wirklich die Validierung dieser Methode.
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich mag mit
Einstellungen
. Diese können automatisch generiert werden, entweder durch die Schaffung von settings mit dem Neue Datei Hinzufügen Dialogfeld, oder durch das hinzufügen einer Standard-Einstellungen der Datei vom Projekt-Eigenschaften.Jede Einstellung kann im Benutzer-oder Anwendungsbereich, der steuert, ob der Benutzer kann diese ändern oder Sie beschränken sich auf Ihre default-Werte. Sie sind einfach gespeichert mit der
Save()
Methode geladen und automatisch in den statischenDefault
Eigenschaft.Ja. Wenn Sie sowohl die Benutzer - /Applikations-basierte Einstellungen und pro-run-Einstellungen, die Sie verwenden sollten, zwei unterschiedliche Klassen - der normalen (gesicherten) Einstellungen und den pro-Lauf-Einstellungen.
Solange Sie nicht speichern Sie die pro-run-Einstellungen, Sie sollten sicher sein, und Einstellungen sind noch Recht einfach zu bedienen. Dies sind die statischen Einstellungen obwohl. Wenn die gleiche Anwendung ausführen, muss mehrere Instanzen - das ist der falsche Ansatz.
Ich würde verwenden Sie ein einzelnes Objekt Konfiguration wie folgt aus:
Da dies ein singleton, es wird nur eine Instanz von sich selbst das erste mal eine
public static
Eigenschaft verwiesen wird von derSetting
Objekt.Wenn das Objekt erstellt wird, liest es von der
Settings.ini
- Datei. Die settings-Datei ist eine nur-text-Datei mit einer einfachenkey : value
Struktur könnte wie folgt Aussehen:Objekt verwendet reflektion, um zu entdecken, jede Eigenschaft und speichern den Ausgangswert. In diesem Beispiel werden zwei Eigenschaften definiert worden:
Den code so geschrieben, Griffe
Int32
undString
Arten. Durch hinzufügen zusätzlichercase
Aussagen zu denswitch
Aussage, Sie könnte leicht fügen Sie Unterstützung für Typen wieFloat
undDecimal
.Eine Einstellung zu verändern, verwenden Sie so etwas wie:
Abrufen einer Einstellung, die Sie verwenden würden, so etwas wie:
Werden Sie feststellen, dass alle Eigenschaften, die stark typisiert. Auch, Sie nicht haben, um passieren die
Setting
Objekt um, als alleSetting
Eigenschaften sindstatic
immer und überall verfügbar.Ich hoffe, diese Idee ist hilfreich.
Finde ich, dass immer, wenn ich zu tun haben mit einem legacy-system, kleben mit dem alten format fast immer am besten funktioniert. Oft gibt es andere Personen, die mit dem legacy-Formate für andere Aufgaben (wie die Automatisierung der app, zum Beispiel), so dass, wenn Sie recode die Art und Weise der Anwendung verarbeitet Eingaben, die Sie brechen könnte andere Systeme.
Auf der anderen Seite, wenn Sie sind ziemlich zuversichtlich, dass Sie wissen, alle Menschen mit dem system, und Sie sagen, dass Sie don ' T care wenn Sie diese Art von Dingen, ich würde wahrscheinlich alles in XML. Neben all den schönen Funktionen von XML aus dem Blickwinkel der Anwendung (wie in ASCII, so ist es leicht modifiziert, indem der Mensch, als selbst dokumentieren, etc ...), XML ist auch zeitsparend, dass Sie nicht haben, um schreiben Sie Ihre eigenen I/O-und parser. Es gibt bereits eine Vielzahl von Bibliotheken gibt, besonders in .NET 3.0/3.5, das tut sehr gut. (Wie Sie sich bewegen C#, ich vermute, Sie denken heute schon an diesen Zeilen 🙂
So sind letztlich, Sie hätten Ihre Entscheidung auf Basis der Kosten zu implementieren: wenn Sie niedriger Ihre Kosten der Umsetzung durch den Wechsel zu XML oder ähnlich, stellen Sie sicher, dass Sie nicht erheben anderen Menschen Kosten der Umsetzung zu bewegen, um Ihr neues application framework.
Glück!
XmlDocument - Sie erzeugen kann, die definition einer Klasse mit XSD.exe