2009-03-31 5 views
4

In einem .Net 3.5 (Windows) -Dienst möchte ich eine kleine Sammlung von Werten in der Konfigurationsdatei speichern. Grundsätzlich muss ich Admins erlauben, Werte aus dieser kleinen Sammlung hinzuzufügen und zu entfernen. Was muss ich zur Konfigurationsdatei hinzufügen, um eine Sammlung kleiner Werte zu speichern, und wie kann ich die Sammlung in C# lesen?Speichern Sie eine Sammlung von Werten in einer Konfigurationsdatei

Um zu klären, die Sammlung ich suche Daten sind wie folgt:

<Illegal Characters> 
    <CustomCollection value="?"/> 
    <CustomCollection value="#"/> 
    <CustomCollection value=","/> 
</Illegal Characters> 

Antwort

3

Es gibt einen guten Artikel über eine benutzerdefinierte Konfiguration Abschnittshandler erstellen, die die Werte als Liste here lädt.

Grundsätzlich Ihre IConfigurationSectionHandler ‚s Create-Methode wie folgt aussehen sollte:

public object Create(object parent, object configContext, XmlNode section) 
{ 
    IList<string> illegal = new List<string>(); 
    XmlNodeList processesNodes= section.SelectNodes("CustomCollection"); 

    foreach (XmlNode child in processesNodes) 
    { 
     illegal.Add(child.Attributes["value"].InnerText); 
    } 
    return illegal; 
} 
0

ich den Weg in VB.NET beschreiben würde, weil ich die C# Art und Weise sehr ähnlich bin sicher ist oder die gleiche in manchen Fällen. Öffnen Sie die settings.settings-Datei unter Mein Projekt im Projektmappen-Explorer. Fügen Sie die gewünschten Einstellungen hinzu, zum Beispiel "OutputPath". Dann wird in dem Code, verweisen Sie mit

variable = My.Settings.OutputPath 

' If a user modifiable setting, you can use: 
My.Settings.OutputPath = variable 
My.Settings.Save() 
1

Wenn die Anzahl der Werte gering ist und die Namen mit ihnen verbundenen festgelegt sind, sollten Sie in der Lage sein, sie zu speichern, in dem appSettings Konfigurationsabschnitt und auf sie verweisen die ConfigurationManager mit .AppSettings-Sammlung. Dies funktioniert ziemlich gut für Standard-Schlüssel-Wert-Paare. Wenn Ihre Daten komplexer sind, sollten Sie möglicherweise einen eigenen Konfigurationsabschnitt und einen zugehörigen ConfigurationSectionHandler definieren, um die Daten in einem benutzerdefinierten Objekt zu analysieren. Sie wollen auch wahrscheinlich ein FileSystemWatcher zur Ermittlung von Änderungen in die Konfigurationsdatei und aktualisieren Sie die Konfiguration der laufenden Anwendung implementieren, wenn es akzeptabel ist, den Dienst, um zu starten/stoppen Sie die neue Konfiguration angelegt zu bekommen.

2

Als Alternative könnten Sie eine einzelne Zeichenfolge mit ungültigen Zeichen als regulären Ausdruck in Ihrer Konfigurationsdatei speichern. Auf diese Weise müssen Sie nicht durch die Zeichen iterieren, um zu überprüfen, ob sie in einer gegebenen Zeichenfolge verwendet werden - Sie können einen Vergleich basierend auf der Regex durchführen. Könnte ein bisschen CPU und Komplexität sparen.

Natürlich ist es einfacher, einzelne XML-Knoten zu verwenden, wenn die Admins die Datei direkt bearbeiten werden. Aber wenn sie die Zeichenliste über die Anwendung selbst ändern, könnte eine Regex gut sein.