Re: User Settings eine Class Library auf Zielrechner "überschreiben"

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Hallo NG,

es scheint keine Möglichkeit zu geben, jedenfalls nicht so wie ich mir
das vorstelle, daher habe ich mir jetzt eine Klasse geschrieben die die
Settings neben dem UserSettings-Modell jetzt auch in einer simplen
XML-Datei abspeichert. Dort kann ich jetzt auch Settings speichern und
andere Werte als eingestellt benutzen.

Falls es jemand interessiert, der Code dafür ist meiner Signatur
hinzugefügt.

Gruß,
Stefan

--
student of geoinformatic

ifgi - institute for geoinformatics
www.ifgi.de

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Xml;
using System.IO;
using System.Configuration;

namespace MOFA.Services {
public class SettingService {
#region (-) Private Attributes

/// <summary>
/// Instanz des Loggers
/// </summary>
private static readonly log4net.ILog logger =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

private Dictionary<mofaSetting, object> settings;
private List<string> exceptionMessages = new List<string>();

#endregion

#region (+) Constructor

public SettingService() {
settings = new Dictionary<mofaSetting, object>();

try {
foreach (SettingsProperty setting in
Properties.Settings.Default.Properties) {
settings.Add((mofaSetting)Enum.Parse(typeof(mofaSetting),
setting.Name),
Properties.Settings.Default.PropertyValues[setting.Name].PropertyValue);
}
} catch (Exception ex) {
exceptionMessages.Add("Konnte UserSettings nicht übertragen");
exceptionMessages.Add(ex.Message);
exceptionMessages.Add(ex.StackTrace);
}
}

#endregion

#region (+) Public Methods

public T GetSetting<T>(mofaSetting key) {
if (settings.ContainsKey(key)) {
return (T)settings[key];
}
return default(T);
}

public void LoadSettings(string path) {
if (File.Exists(path)) {
try {
XmlDocument doc = new XmlDocument();
doc.Load(path);
foreach (XmlNode node in doc.FirstChild.ChildNodes) {
settings.Add((mofaSetting)Enum.Parse(typeof(mofaSetting),
node.Attributes["key"].InnerText), node.InnerText);
}
} catch (Exception ex) {
exceptionMessages.Add("Konnte Settings nicht auslesen");
exceptionMessages.Add(ex.Message);
exceptionMessages.Add(ex.StackTrace);
}
} else {
exceptionMessages.Add("Settings-Datei nicht gefunden: " + path);
}
}

public void SaveSettings(string path) {
try {
XmlDocument doc = new XmlDocument();
XmlNode root = doc.CreateElement("mofa");

foreach (mofaSetting key in settings.Keys) {
XmlNode node = doc.CreateElement("setting");
node.InnerText = settings[key].ToString();

XmlAttribute keyAttribute = doc.CreateAttribute("key");
keyAttribute.InnerText = key.ToString();
node.Attributes.Append(keyAttribute);

root.AppendChild(node);
}

doc.AppendChild(root);
doc.Save(path);
} catch (Exception ex) {
logger.Error("Konnte Settings nicht schreiben", ex);
}
}

public void SetSetting(mofaSetting key, object aValue) {
if (settings.ContainsKey(key)) {
settings[key] = aValue;
} else {
settings.Add(key, aValue);
}
}

#endregion
}
}
.



Relevant Pages