Re: User Settings eine Class Library auf Zielrechner "überschreiben"
- From: Stefan Offermann <offermann@xxxxxxxxxxxxxxx>
- Date: Thu, 17 Apr 2008 15:52:54 +0200
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
}
}
.
- References:
- User Settings eine Class Library auf Zielrechner "überschreiben"
- From: Stefan Offermann
- User Settings eine Class Library auf Zielrechner "überschreiben"
- Prev by Date: ClickOnceDeployment
- Next by Date: Dictionary Werte aendern
- Previous by thread: User Settings eine Class Library auf Zielrechner "überschreiben"
- Next by thread: Autocomplete - Combobox
- Index(es):
Relevant Pages
|