Settings - Klasse speichern

26/06/2008 - 11:28 von Werner Perplies | Report spam
Hi,

Nachdem ich auf mein Problem "Serialize" noch keine Antwort bekommen habe,
die mein Problem löst, bin ich den ursprünglich angedachten Weg gegangen
und wieder in einer Sackgasse gelandet.

Ursprünglich wollte ich ja meine Klasse direkt in den Settigns speichern,
fand aber in der Typauswahl den entsprechenden Typ nicht.

Nachdem ich bei Microsoft diesen Hinweis

"Der Designer zeigt keine Eigenschaften an, deren Typ innerhalb der
aktuellen Assembly definiert ist. Dies ist eine bekannte Einschrànkung."

gefunden habe, habe ich also die entsprechenden Klassen in eine
Klassenbibliothek ausgelagert.

Anschließend stand mir dann auch die Klasse als Typ im Settings zur
Verfügung.

Die Zuweisung klapt auch, nur nach den erneuten Einlesen des Settings ist
die Klasse wieder leer.

Es gibt keinerlei Fehlermeldeung.

// Designsettings enthàlt lediglich
[Serializable()]
public class DesignSettings
{
public List<DsForm> Forms = new List<DsForm>();
}
DsForm enthàlt Size, Location, diverse Fonts und Colors und
String-Collections.


Kurzes Testbeispiel:
DesignSettings ds = new DesignSettings();
if (Properties.Settings.Default.MyDesignSettings == null)
{
DsForm dsf = new DsForm();
dsf.Size = this.Size;
dsf.Location = this.Location;
ds.Forms.Add(dsf);
Properties.Settings.Default.MyDesignSettings = ds;
DesignSettings ds2 = Properties.Settings.Default.MyDesignSettings;
// ds2 enthàlt die Klasse wie erwartet
// speichern
Properties.Settings.Default.Save();
// neu einlesen
Properties.Settings.Default.Reload();
DesignSettings ds3 = Properties.Settings.Default.MyDesignSettings;
// ds3 ist null!!!
}

Also, wie speichere ich die Daten richtig ab?

Oder muss ich mir tatsàchlich eine eigene (eigenes Format) Settings-Datei
erzeugen?

Danke für Hilfe.

Gruß
Werner
www.weepee.eu
 

Lesen sie die antworten

#1 Klaus Ruttkowski
26/06/2008 - 11:45 | Warnen spam
Frank Dzaebel hat hier einiges zu dem Thema geschrieben, auch über eigene
Settings-Objekte.
Könnte dir weiterhelfen.

[Mit dem XmlSerializer eigene Objekte serialisieren und deserialisieren]
http://dzaebel.net/XmlSerializer.htm

Gruß Klaus

"Werner Perplies" schrieb im Newsbeitrag
news:196bjezp54zrv$
Hi,

Nachdem ich auf mein Problem "Serialize" noch keine Antwort bekommen habe,
die mein Problem löst, bin ich den ursprünglich angedachten Weg gegangen
und wieder in einer Sackgasse gelandet.

Ursprünglich wollte ich ja meine Klasse direkt in den Settigns speichern,
fand aber in der Typauswahl den entsprechenden Typ nicht.

Nachdem ich bei Microsoft diesen Hinweis

"Der Designer zeigt keine Eigenschaften an, deren Typ innerhalb der
aktuellen Assembly definiert ist. Dies ist eine bekannte Einschrànkung."

gefunden habe, habe ich also die entsprechenden Klassen in eine
Klassenbibliothek ausgelagert.

Anschließend stand mir dann auch die Klasse als Typ im Settings zur
Verfügung.

Die Zuweisung klapt auch, nur nach den erneuten Einlesen des Settings ist
die Klasse wieder leer.

Es gibt keinerlei Fehlermeldeung.

// Designsettings enthàlt lediglich
[Serializable()]
public class DesignSettings
{
public List<DsForm> Forms = new List<DsForm>();
}
DsForm enthàlt Size, Location, diverse Fonts und Colors und
String-Collections.


Kurzes Testbeispiel:
DesignSettings ds = new DesignSettings();
if (Properties.Settings.Default.MyDesignSettings == null)
{
DsForm dsf = new DsForm();
dsf.Size = this.Size;
dsf.Location = this.Location;
ds.Forms.Add(dsf);
Properties.Settings.Default.MyDesignSettings = ds;
DesignSettings ds2 = Properties.Settings.Default.MyDesignSettings;
// ds2 enthàlt die Klasse wie erwartet
// speichern
Properties.Settings.Default.Save();
// neu einlesen
Properties.Settings.Default.Reload();
DesignSettings ds3 = Properties.Settings.Default.MyDesignSettings;
// ds3 ist null!!!
}

Also, wie speichere ich die Daten richtig ab?

Oder muss ich mir tatsàchlich eine eigene (eigenes Format) Settings-Datei
erzeugen?

Danke für Hilfe.

Gruß
Werner
www.weepee.eu

Ähnliche fragen