29. oktober 2011 - 18:38Der er
5 kommentarer og 1 løsning
XML deserialize & properties
Jeg har deserialize en xml fil med dette element (Det er en liste over andre elementer)
Nå jeg kører min test på denne unit, dvs. bruger properties normalt, får jeg overført listen til "ce" og kørt metoden "changed" og jeg kan få debuggeren til at stoppe på linierne.
Nå jeg deserialize fra xmlfilen, får jeg listen overført til "ce", men jeg får ikke kørt "changed". Det er heller ikke muligt for mig at debugge på linierne, debuggeren stopper ikke.
Bruger deserialize metoden properties, på en mærkelig måde, eller hvad driller her ?
VH Jørn
---------------------
[XmlElement("entry")] public List<Entry.CaptainEntry> EntryList { get { return ce; }
Jeg har arbejdet med dette et stykke tid nu. Er kommet over mine problemer med deserializer af xmlfilen. Jeg får alle data ind, hvis jeg bruger auto properties.
Alle mine subklasser af logfiler har lister med "entry" data. Disse entry data har meget til fælles, så her har jeg også en baseklasse og subklasser for hver entry type. Entry.Entry er base klasse til Entry.CaptainEntry.
Da jeg skal behandle disse entry typer på næsten samme måde, ville jeg gerne at de var samlet i logfile base klassen, i en linket liste.
Jeg ville herfor når deserilizeren oprettede en logfile objekt, og fik listen af entry ind på "EntryList" set propertien, kalde min metode til at sortere denne liste til linketliste og gemme den i baseklassen.
Det virker fra min test. Når jeg sender en liste til EntryList, får jeg sorteret denne liste til en linketliste, men ikke når jeg får data fra deserilizeren. Jeg får listen ind på "ce" men får ikke kørt "changed" eller kan break med debuggeren.
Håber det giver et bedre overblik og du kan give mig vink
På forhånd tak
Base klasse for flere typer logfiler ------------------------------------------
public abstract class Logfile {
protected LinkedList<Entry.Entry> _entrylist;
public Logfile() {
}
/// flere proproties og metoder
}
***************************************
En af subklasserne Her får jeg en liste ind med events.
----------------------
XmlRoot(ElementName = "log", IsNullable = false)] public class Captain :Logfile {
private List<Entry.CaptainEntry> ce;
public Captain() { ce = new List<Entry.CaptainEntry>(); _entrylist = new LinkedList<Entry.Entry>(); }
[XmlElement("entry")] public List<Entry.CaptainEntry> EntryList { get { return ce; }
set { ce = value; changed(); } }
private void changed() { /// Sort the event by time and add to _entrylist
Ahhh, troede din changed var en PropertyChanged event ting :-)
Men er de ikke allerede sorteret når du kommer ind igen?
Og hvis den gør:
EntryList = new List<Entry.CaptainEntry>(); Og derefter Add'er dine items som er blevet deserialised ... så løser det vel intet problem om den hører changed eller ej.
Men du kunne sortere i din "get".
I hvert fald håber jeg på en anden kommer med lidt ekspert viden omkring hvorfor du ikke kommer ind i din Property setter.
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.