Saa er det jo korrekt at kun TitleTypes bliver gemt ved XML serialisering.
Enten maa du lave nogle properties til resten af data som du vil have serialiseret eller så må du lave en custom serialisering.
Synes godt om
Slettet bruger
05. juni 2010 - 19:42#12
Men det er da mærkeligt at fordi jeg laver min egen collection, så virker det ikke. Hvordan virker en almindelig collection så? Når jeg arver,burde det vel være ens.
using System; using System.Collections.Generic; using System.Xml; using System.Xml.Serialization; using System.Xml.Schema;
namespace E { public class Data1 { private int v1; private int v2; private int v3; public Data1() : this(0, 0, 0) { } public Data1(int v1, int v2, int v3) { this.v1 = v1; this.v2 = v2; this.v3 = v3; } public int V1 { get { return v1; } set { v1 = value; } } public int V2 { get { return v2; } } } public class Data2 : IXmlSerializable { private int v1; private int v2; private int v3; public Data2() : this(0, 0, 0) { } public Data2(int v1, int v2, int v3) { this.v1 = v1; this.v2 = v2; this.v3 = v3; } public int V1 { get { return v1; } set { v1 = value; } } public int V2 { get { return v2; } } public XmlSchema GetSchema() { return null; } public void ReadXml(XmlReader rdr) { throw new NotImplementedException("Arne forgot to add deserialization"); } public void WriteXml(XmlWriter wrt) { wrt.WriteStartElement("V1"); wrt.WriteString(v1.ToString()); wrt.WriteEndElement(); wrt.WriteStartElement("V2"); wrt.WriteString(v2.ToString()); wrt.WriteEndElement(); wrt.WriteStartElement("V3"); wrt.WriteString(v3.ToString()); wrt.WriteEndElement(); } } public class List4<T> { private List<T> real = new List<T>(); public void Add(T o) { real.Add(o); } } public class List5<T> : IEnumerable<T> { private List<T> real = new List<T>(); public void Add(T o) { real.Add(o); } public IEnumerator<T> GetEnumerator() { return real.GetEnumerator(); } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw new NotImplementedException("Arne forgot to add old style enumerator"); } } public class Program { public static void AnySer<T>(T o) { XmlSerializer ser = new XmlSerializer(typeof(T)); ser.Serialize(Console.Out, o); } public static void Main(string[] args) { Data1 o1 = new Data1(1, 2, 3); AnySer(o1); Data2 o2 = new Data2(1, 2, 3); AnySer(o2); List<string> lst3 = new List<string>(); lst3.Add("A"); lst3.Add("BB"); lst3.Add("CCC"); AnySer(lst3); List4<string> lst4 = new List4<string>(); lst4.Add("A"); lst4.Add("BB"); lst4.Add("CCC"); AnySer(lst4); List5<string> lst5 = new List5<string>(); lst5.Add("A"); lst5.Add("BB"); lst5.Add("CCC"); AnySer(lst5); Console.ReadKey(); } } }
Synes godt om
Slettet bruger
07. juni 2010 - 15:09#15
Så hvis min custom collection implementerede IEnumerable ville det måske virke korrekt?
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.