Serializacja klasy (xml)

0

Mam taki kod funkcji:

public static void Serialize(List<Zajecia> xml_List)
        {
            XmlSerializer Xml = new XmlSerializer(typeof(List<Zajecia>));
           
            TextWriter Txt = new StreamWriter(@"C:\plan.xml");
            Xml.Serialize(Txt,xml_List);
            Txt.Dispose();
        }
 

problem kompilator mi wynajduje w linijce
TextWriter Txt = new StreamWriter(@"C:\plan.xml");
I twierdzi ze wystepuja nieprawidlowe argumenty ... nie za bardzo wiem jak to mozliwe

0

ten sam błąd

0
  1. Jak wygląda klasa zajęcia?
  2. Co masz w InnerException tego wyjątku, który Ci się pokazuje?
0
private class Zajecia
        {
            public string Begin { get; set; }
            public string End { get; set; }
            public string Day { get; set; }
            public string Lesson { get; set; }
            public string Teacher { get; set; }
            public string Sort { get; set; }
            public string Room { get; set; }

            public Zajecia(string start, string finish, string day, string lesson, string teacher, string sort, string room)
            {
                Begin = start;
                End = finish;
                Day = day;
                Lesson = lesson;
                Teacher = teacher;
                Sort = sort;
                Room = room; 
            }
        } 

Błąd 2 Argument 1: nie można wykonać konwersji z string” na System.IO.Stream. C:*****\BasicPage1.xaml.cs 59 47 Plan

0

Jeżeli ta klasa jest prywatna, to na pewno nie możesz jej użyć w publicznej metodzie.
Żeby klasa była serializowalna, musi mieć publiczny bezparametrowy konstruktor.

Poza tym, Twój kod działa, więc coś ściemniasz.

0

mogę screenshota załaczyć, żeby nie było nie w tym tkwi problem akurat to nie jest istotne czy funkcja/klasa jest publiczna jezeli mi konstruktor klasy streamwriter nie dziala
Przypomne ze to jest metro app robione w kompilatorze visual express 2012 for windows 8

0

Widze ze dalej nikt nie jest mi w stanie udzelic pomocy... dodam jeszcze jeden fragment dotyczacy tej samej linii ktorego wczesniej nie zauwazylem

Błąd 2 Argument 1: nie można wykonać konwersji z 'string' na 'System.IO.Stream' C:\Users*****\Projects\Plan\Plan\BasicPage1.xaml.cs 59 47 Plan

0

przecież masz czarno na białym napisane, i to jeszcze po polsku - podajesz string, a wymagany jest Stream. utwórz sobie FileStream i podaj go jako parametr.

0

Ja kiedy robię serializację XMLową, to zawsze wykorzystuję FileStream, a nie TextWriter i działa bez zarzutów. W konstruktorze, tylko ustawia prawa od pliku i działa, przykład:

FileStream stream = new FileStream(@"C:\plan.xml", FileMode.Create, FileAccess.Write) 

Spróbuj i zobacz czy to pójdzie.

Pamiętaj jednak, że żeby deserializacja zadziałała, musisz mieć publiczny konstruktor bezargumentowy i chyba również publiczną klasę (ale tego ostatniego pewien nie jestem). Do samej serializacji nie jest to raczej wymagane.

0
ŁF napisał(a):

przecież masz czarno na białym napisane, i to jeszcze po polsku - podajesz string, a wymagany jest Stream. utwórz sobie FileStream i podaj go jako parametr.

w tym wypadku taka ewentualnosc odpada poradzilem sobie dzieki klasie memorystream... teraz mam problem bo mimo ze klasa i wszystkie jej skladowe so public program zdaje sie nie miec do niczego dostepu i nie wiem co z tym zrobic...

0

podaj treść błędu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1