Serilizace predka a potomka – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Serilizace predka a potomka – .NET – Fórum – Programujte.comSerilizace predka a potomka – .NET – Fórum – Programujte.com

 

Rufus
~ Anonymní uživatel
11 příspěvků
13. 2. 2019   #1
-
0
-

Ahoj,

snad mi někdo poradi. Mam predka a potomka, které ukladám do bindinglistu<pre­dek>. Podle navodu na internetu jsem vytvoril serializer:

XmlSerializer serializer = new XmlSerializer(ty­peof(predek),new[] {typeof(potomek)});

Když se pak pokusim serilizovat, vyhodi mi to chybu:

InvalidCastEx­ception: Objekt typu System.Componen­tModel.Bindin­gList`1[Predek] nelze přetypovat na typ Predek.

Nevite nekdo, co delam spatne?

Moc dekuju za odpověď.

Nahlásit jako SPAM
IP: 77.242.95.–
jerry
~ Anonymní uživatel
504 příspěvků
14. 2. 2019   #2
-
0
-

#1 Rufus
https://docs.microsoft.com/cs-cz/dotnet/standard/serialization/examples-of-xml-serialization

http://www.jonasjohn.de/snippets/csharp/xmlserializer-example.htm

ahááááááá tak takhle to má bejt :)

Nahlásit jako SPAM
IP: 109.81.214.–
rufus
~ Anonymní uživatel
11 příspěvků
14. 2. 2019   #3
-
0
-

#2 jerry

no, jde mi o to, ze nemuzu serializovat predka i potomka. Mel jsem tridu, kterou jsem bez problemu serializoval. Pak jsem od této tridy oddedil potomka a serilizovat mi neslo. Musim kazdou tridu serializovat zvlast, když jedna od druhé dedi? Potrebuju všechny instance obou trid v jednom bindinglistu, abych je pak mohl zobrazit v listboxu..snad jsem se vyjadril trochu srozumitelne.

Nahlásit jako SPAM
IP: 217.197.151.–
MilanL+1
Grafoman
14. 2. 2019   #4
-
0
-

#1 Rufus
není kod těžko ti tu lidi budou radit, každopádně pokud to budeš hledat, tak bych spíš hledal serializaci více třríd.

jako nouzovka by mohlo stačít 

XmlSerializer serializer = new XmlSerializer(ty­peof(predek));

aplikovat u writeru na předky i potomky , akorát z potomka to bude brát jen ty hodnoty co jsou definované v předkovi. Případně to zkusit obráceně typ serializace dle potomka s tím, že u předka pak budou některé hodnoty prázdné.

Případně si udělat vlastní serializační metodu.

Nahlásit jako SPAM
IP: 91.139.9.–
rufus
~ Anonymní uživatel
11 příspěvků
14. 2. 2019   #5
-
0
-

Kdyby to nekoho zajímalo, mozna jsem na něco prisel.

První chyba je samozrejme při vytvareni serializeru, kteremu se musí predat bindinglist s potomkama a predkama:

~XmlSerializer serializer = new XmlSerializer(bindinglist.GetType());

Nasledne je potřeba před tridu predka dopsat:

[XmlInclude(typeof(Potomek))]
public class predek ...

Zatim jsem to moc nevyzkousel. Ale vypada to, ze by to mohlo jit.

Nahlásit jako SPAM
IP: 217.197.151.–
jerry
~ Anonymní uživatel
504 příspěvků
14. 2. 2019   #6
-
0
-

#5 rufus
serializace se moc nepoužívá protože microsoft na to hodil bobek a spousta věcí tam nejde třeba události a tak takže když něco dělám tak to ukládám "ručně"

každopádně musíš překladači říct která třída se má serializovat a které její části a to atributem Serializable

https://docs.microsoft.com/en-us/dotnet/api/system.serializableattribute?view=netframework-4.7.2

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:1064:8a83:2704:55e4...–
MilanL+1
Grafoman
15. 2. 2019   #7
-
0
-

#5 rufus
když tam dáš to XMLinclude k předkovi, tak si myslím, že pak můžeš serializer nastavit na ten typ potomka

Nahlásit jako SPAM
IP: 91.139.9.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý