2016-05-29 19 views
0

Ich habe eine Klasse, wo ich bestimmte Einstellungen aus einer Datenbank (Benutzernamen und Passwörter) abrufen. Diese Datenbank befindet sich in einem Netzwerk und bedeutet, dass wenn die Kennwörter geändert werden, ich sie einfach in der Datenbank ändern kann, und alle Anwendungen, die diese Klasse verwenden, funktionieren weiterhin.Einstellungen für eine Klasse

Ich bin mir der Vor- und Nachteile der Speicherung von Benutzernamen und Passwörtern in einer Datenbank und an einem anderen Ort bewusst. Ich möchte diese nicht diskutieren, bitte.

Die Klasse verfügt über eine fest codierte statische Zeichenfolge, die den Pfad zur Datenbank angibt. Es ist ein vollständig qualifizierter Netzwerkname (nicht nur der Laufwerksbuchstabe). Ich tat dies, weil wir ein Problem hatten, bei dem unser DNS im Netzwerk durcheinander gebracht wurde und Laufwerksbuchstabenzuordnungen nicht mehr funktionierten, und manche Leute haben sowieso andere Laufwerkszuordnungen.

Wir hatten kürzlich unseren Server verschoben, also muss ich jetzt diese hartcodierten Strings durchlaufen und ändern.

Ich dachte, dass ich den Pfad stattdessen in einer Einstellungen/Konfigurationsdatei speichern sollte. Ich habe "application.settings" berücksichtigt, aber es handelt sich nicht um eine Anwendungseinstellung. es ist spezifisch für die Klasse. Gibt es einen bevorzugten Weg, dies im bestehenden .Net Framework zu tun (dies ist ein C# Problem)?

Ich könnte einfach eine kleine Text- oder XML-Datei haben, die im Anwendungsverzeichnis liegt, was wahrscheinlich in Ordnung ist ... Gibt es einen vorhandenen Framework-Namespace oder Open-Source-Code-Snippet, von dem jemand weiß, dass ich ihn verwenden kann?

Antwort

0

Ich denke, wenn Sie eine klassenspezifische Konfiguration wünschen, sollten Sie versuchen, diese Klasseninstanzen konfigurationsgesteuert zu haben. Eine andere Art zu denken, aber; Wenn Sie in einer Konfigurationsdatei eine etwas definieren, wird eine Instanz des definierten Klassennamens erstellt.

Zum Beispiel: einen Abschnitt erstellen, und es nennen, <Modules> und erstellen Elemente in wie: <module type="<namespace>.DBConvertor" param="username=root;passwd=whatever"> wird diese Art beim Start erstellt werden (Sie müssen einige Codierung hier). Und es ist sogar möglich, mehrere Instanzen gleichzeitig mit den spezifischen Konfigurationen zu erstellen.

Diese Art der Konfiguration wird bereits umgesetzt: Sie könnten diese einen Blick: „Gewusst wie: Erstellen von benutzerdefinierten Konfigurationsabschnitten Configuration Mit“https://msdn.microsoft.com/en-us/library /2tw134k3.aspx

Und Erstellen von Instanzen von Typnamen, verwenden Sie die Activator Klasse.

Daneben gibt es viele Modul/Plugin-Bibliotheken, (wie Managed Extensibility Framework (MEF)https://msdn.microsoft.com/en-us/library/dd460648(v=vs.110).aspx könnte aber in diesem Fall ein wenig übertrieben sein).

+0

Danke. Ich habe gelesen und weiß noch nicht genau, wie ich das voll ausnutzen könnte. Ist das ASPX spezifisch? Es scheint ein Mittel zu sein, um einer Konfigurationsdatei zu erlauben, die Erzeugung von Klassen zu steuern (obwohl es natürlich erlaubt, Einstellungen zu speichern). Ich denke, ich suche eher nach einer Gruppe von "Einstellungen", die über eine Klasse verwaltet werden, anstatt über die beigefügte Anwendung verwaltet zu werden. – ainwood

Verwandte Themen