Hallöchen,
ich hadere bei jedem neuen Projekt wegen der Einstellungen....
Diese sollen Global überall zur Verfügung weil Einstellungen nunmal oft das ganze Projekt betreffen.
Zurzeit habe ich folgende "Basis-Config-Klasse":
Spoiler anzeigen
Dieser füge ich dann Propertys hinzu die gespeichert werden müssen und über Config.Default.PropertyName kann ich dann überall auf die Sache zugreifen.
Allerdings habe ich in meinem ViewModel natürlich die Propertys doppelt gemoppelt...
Habe ich z.b. eine View wo man FTP Daten eingibt habe ich in meinem ViewModel dann Propertys für Host, Port, User, Pass
und in meiner Config ebenso. Beim erstellen der VM setzte ich dann die VM-Propertys immer auf die Werte die in der Config stehen.
Beim speichern natürlich umgekehrt...
Die Frage ist: Geht das besser? Denn so habe ich oft "doppelte" Propertys halt einmal in der VM und einmal in der Config.
Wichtig ist mir halt das ich meine Einstellungen halt da speichern kann wo ich will (am besten neben der Exe).
Wichtig ist außerdem das ich das ganze natürlich auch in MVVM nutzen kann was jetzt nur so "semi" geil ist wenn ich Einstellungen außerhalb von ViewModels habe.
ich hadere bei jedem neuen Projekt wegen der Einstellungen....
Diese sollen Global überall zur Verfügung weil Einstellungen nunmal oft das ganze Projekt betreffen.
Zurzeit habe ich folgende "Basis-Config-Klasse":
C#-Quellcode
- public class Config
- {
- private static Config _defaultConfig = new Config();
- public static Config Default
- {
- get { return _defaultConfig; }
- set
- {
- if (Equals(value, _defaultConfig)) return;
- _defaultConfig = value;
- }
- }
- public static void SaveToXML(string _filename)
- {
- XmlSerializer xs = new XmlSerializer(typeof(Config));
- TextWriter txtWriter = new StreamWriter(_filename);
- xs.Serialize(txtWriter, Default);
- txtWriter.Close();
- }
- public static void LoadFromXML(string _filename)
- {
- if (!File.Exists(_filename))
- {
- Default = new Config();
- SaveToXML();
- }
- else
- {
- XmlSerializer xs = new XmlSerializer(typeof(Config));
- using (Stream reader = new FileStream(_filename, FileMode.Open))
- {
- Default = (Config)xs.Deserialize(reader);
- }
- }
- }
- }
Dieser füge ich dann Propertys hinzu die gespeichert werden müssen und über Config.Default.PropertyName kann ich dann überall auf die Sache zugreifen.
Allerdings habe ich in meinem ViewModel natürlich die Propertys doppelt gemoppelt...
Habe ich z.b. eine View wo man FTP Daten eingibt habe ich in meinem ViewModel dann Propertys für Host, Port, User, Pass
und in meiner Config ebenso. Beim erstellen der VM setzte ich dann die VM-Propertys immer auf die Werte die in der Config stehen.
Beim speichern natürlich umgekehrt...
Die Frage ist: Geht das besser? Denn so habe ich oft "doppelte" Propertys halt einmal in der VM und einmal in der Config.
Wichtig ist mir halt das ich meine Einstellungen halt da speichern kann wo ich will (am besten neben der Exe).
Wichtig ist außerdem das ich das ganze natürlich auch in MVVM nutzen kann was jetzt nur so "semi" geil ist wenn ich Einstellungen außerhalb von ViewModels habe.