Avatar billede Skynet Mester
23. august 2008 - 16:06 Der er 5 kommentarer og
1 løsning

.NET Serialization

Hej, jeg har en liste af objekter som blive udskrevet på en fil:

43 False
44 False
45 False
46 False
47 False

Men til hver af disse liner, skal der være x antal reserveringer som består af en dato og navn.

Men hvordan gør jeg det, så jeg kan indlæse det til listerne igen, skal det være noget i den retning

43 False, Reserveringer: ole 2-2-2008, peter 3-2-2008
44 False
45 False
46 False
47 False

og så når jeg skal indlæse det, laver jeg en en funktion som kun indlæser efter "Reserveringer:" og efter hvert komma?

Eller bliver jeg nødt til at oprette en mappe og så gemme udskriften af listen med reserveringer i mappen?


Her er min kode:
// Specify file, instructions, and privelegdes
                FileStream file = new FileStream(@"c:\test\test.txt", FileMode.OpenOrCreate, FileAccess.Write);

                // Create a new stream to write to the file
                StreamWriter sw = new StreamWriter(file);

                // Write a string to the file               
                Flaskeliste.ForEach(delegate(Flaske st)
                {
                    sw.WriteLine((st.ToString() + " " + (st.PropertyTilstand.ToString())));
               
                });
               

                // Close StreamWriter
                sw.Close();

                // Close file
                file.Close();
Avatar billede arne_v Ekspert
23. august 2008 - 16:29 #1
Jeg tror at du skal droppe den custom serialisering og skifte til den indbyggede
XML serialisering.
Avatar billede Skynet Mester
23. august 2008 - 18:59 #2
Jep, problemet er bare at jeg kender intet til XML :)
Avatar billede arne_v Ekspert
23. august 2008 - 19:33 #3
Det er lige ud af landevejen og du behøver ikke engang vide noget om XML !

Eksempel fra lageret:

using System;
using System.IO;
using System.Text;
using System.Collections;
using System.Xml.Serialization;

public class X
{
    private int v;
    public X() : this(0)
    {
    }
    public X(int v)
    {
        this.v = v;
    }
    public int V
    {
        get
        {
            return v;
        }
        set
        {
            v = value;
        }
    }
    public override string ToString()
    {
        return v.ToString();
    }
}

[XmlInclude(typeof( X ))]
public class Test
{
    private ArrayList list;
    public Test()
    {
        list = new ArrayList();
    }
    public void Add(X x)
    {
        list.Add(x);
    }
    public ArrayList List
    {
        get
        {
            return list;
        }
        set
        {
            list = value;
        }
    }
    public override string ToString()
    {
        StringBuilder sb = new StringBuilder("");
        for(int i = 0; i < list.Count; i++)
        {
            sb.Append(list[i]);
        }
        return sb.ToString();
    }
}

class MainClass
{
    public static void Main(string[] args)
    {
        Test tst = new Test();
        tst.Add(new X(1));
        tst.Add(new X(2));
        tst.Add(new X(3));
        Console.WriteLine(tst);
        XmlSerializer ser = new XmlSerializer(typeof(Test));
        StreamWriter sw = new StreamWriter("C:\\test.xml");
        ser.Serialize(sw, tst);
        sw.Close();
        StreamReader sr = new StreamReader("C:\\test.xml");
        Test tst2 = (Test)ser.Deserialize(sr);
        sr.Close(); 
        Console.WriteLine(tst2);
    }
}
Avatar billede Skynet Mester
26. august 2008 - 18:35 #4
tak for det, jeg prøver det lige af i løbet af et par uger :)
Avatar billede Skynet Mester
08. september 2008 - 15:03 #5
tak for hjælpen, vil gerne give points
Avatar billede arne_v Ekspert
08. september 2008 - 15:11 #6
så smider jeg et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester