Avatar
Robert Zemánek (bobánek):

zdarec, podle zdejšího návodu se pokouším serializovat Observable kolekci:

XmlSerializer serializer = new XmlSerializer(subSystem.GetType());
            using (StreamWriter sw = new StreamWriter("subsystemdata.xml"))
            {
                try
                {
                    serializer.Serialize(sw, subSystem);
                }
                catch (Exception ex)
                {
                    throw (ex);
                }
            }

v subData mám dva konstruktory jeden s parametrem, druhý bez parametrický, ale při pokusu uložit my to hází výjimku. v Subadata jsou objekty které mají vlastnosti int, string a Observable collection.
vyhozená vyjímka:

There was an error reflecting type 'System.Collections.ObjectModel.ObservableCollection`1[EatJob.subSystem]'.

napadá mě že xmlserializer neumí serializovat ObservableColl. ale netuším.
Předem díky ;)

Editováno 15.12.2013 11:34
Odpovědět 15.12.2013 11:21
Jsem jako holub.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Robert Zemánek (bobánek)
David Čápka:

A co je v kolekci za objekty? Všechny jejich atributy musí být serializovatelné. Za chvíli publikuji seriál pro WPF kde se přesně tohle dělá, tak se na to můžeš podívat.

Nahoru Odpovědět 15.12.2013 11:24
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Robert Zemánek (bobánek):

mám to takhle

private ObservableCollection<Meal> subSystem;

class Meal
 property - string, int, ObservableCollection<Composition>

class Composition
 property - double,string, double
  • ve třídách jsou ještě nějaké metody
Nahoru Odpovědět 15.12.2013 11:30
Jsem jako holub.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Robert Zemánek (bobánek)
David Čápka:

OC určitě serializovat lze. Možná ale nejde serializovat kolekci, která obsahuje další kolekci. Zkus ji z Meal vyndat.

Nahoru Odpovědět  +1 15.12.2013 11:35
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Robert Zemánek (bobánek):

je to tak, nelze to ani s obyčejným listem

Editováno 15.12.2013 11:41
Nahoru Odpovědět 15.12.2013 11:38
Jsem jako holub.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Robert Zemánek (bobánek)
David Čápka:

Pokud máš takhle složitý datový model, vyplatí se ti použít třeba MS-SQL Compact Edition.

Nahoru Odpovědět 15.12.2013 11:48
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Robert Zemánek (bobánek):

dík za tip, ale prozatím jsem to vyřešil tak, že každý Meal ukládám do xml zvlášť, tudíž mám zatím 10 souborů, je to sice nepraktické, ale postačující

Nahoru Odpovědět 15.12.2013 11:52
Jsem jako holub.
Avatar
coells
Redaktor
Avatar
Odpovídá na Robert Zemánek (bobánek)
coells:

Podle výjimky máš typ ObservableCollec­tion<subSystem>, který nejde serializovat. Ale podle toho, co uvádíš ve svých třídách, nic takového neexistuje, takže jsi neuvedl všechny třídy.

Tip na dálku: chybí ti defaultní konstruktor na typu subSystem.

 
Nahoru Odpovědět 15.12.2013 16:12
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:

XmlSerializer umí serializovat libovolně složité objekty. There was an error reflecting type 'XXX' znamená, že typ XXX nesplňuje podmínky pro serializaci - např. tam chybí defaultní konstruktor.

 
Nahoru Odpovědět 15.12.2013 16:15
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Robert Zemánek (bobánek)
Jan Vargovský:

Máš všechny třídy veřejné a vlastnosti mají public get i set? Plus to, co říká coells nademnou.

 
Nahoru Odpovědět 15.12.2013 16:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.