Fireplace April 2026

C# Klasse wird in der Setting Datei nicht richtig abgespeichert

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.115
Ich habe da eine Frage. Auf dem Bild "1", das man im Anhang sieht, habe ich in der Config meine eigene Klasse eingerichtet. Tja normalerweise sollte ja so etwas problemlos funktionieren. Aber es tut nicht.

Bekomme nach dem Abspeichern dann:

Code:
            <setting name="DataBase" serializeAs="Xml">
                <value />
            </setting>

Auf dem Bild "2" sieht man wie die Klasse aufgebaut ist.

Ich habe schon alles ausprobiert. ISerializable und auch Serializable Attribut. Nichts hat funktioniert.

Und ja, die Settings werden abgespeichert!

Wäre sehr Dankbar, wenn jemand was positives dazu sagen kann. Klar kann ich alles in vier verschiedene Variablen aufteilen und diese Getrennt speichern, aber wenn C# das Abspeicher der eigenen Klassen unterstützt, wieso den auch nicht gleich die ganze Klasse benutzen!

Auf dem Bild "3" wurde der aktueller Moment beim Debuggen aufgezeichnet.
 

Anhänge

  • 2.png
    2.png
    8,6 KB · Aufrufe: 236
  • 1.png
    1.png
    2,5 KB · Aufrufe: 195
  • 3.png
    3.png
    36,2 KB · Aufrufe: 202
Zuletzt bearbeitet:
Keine Ahnung, wo und was du da eingestellt hast.

Ich serialisiere Objekte immer auf diese Art und Weiße:
Code:
XmlSerializer serializer = new XmlSerializer(typeof(KlasseDesObjekts));
TextWriter writer = new StreamWriter(@"Dateiname.xml");
serializer.Serialize(writer, Objekt);
writer.Close();

Macht zB aus diesem hier:
Code:
public class MeinObjekt
{
    public List<string> StringListe { get; set; }
    public int Nummer { get; set; }

    public MeinObjekt()
    {
        StringListe = new List<string>();
        Nummer = 0;
    }
}
Das hier:
Code:
<MeinObjekt>
    <ArrayOfStringListe>
        <String>bla</String>
    </ArrayOfStringListe>
    <Nummer Value="0"/>
</MeinObjekt>
(oder etwas mit ähnlicher Ausgabe)


Nachtrag:
Hat deine Klasse DBConfig einen Konstruktor? Der ist bei der XML-Serialisierung unbedingt nötig, wenn du das Objekt später wieder deserialisieren willst.
 
Code:
        public DBConfig()
        {
            this.DB = Databases.None;
            this.Password = String.Empty;
            this.ServerName = String.Empty;
            this.UserName = String.Empty;
        }

Ja, den hier.

Ich kann hier leider keine Serializer benutzen, da dieser Code durch .NET selbst serialisiert werden sollte.
 
habs letztendlich aufgegeben... wollte nicht zu viel komplizierte Sachen machen. Trotzdem Danke
 
Zurück
Oben