ArrayList serialisieren
-
Hallo,
ich will eine generische ArrayList serialisieren:
List<Light> list = new List<Light>(); Light p = new PointLight(); list.Add(p); XmlSerializer s = new XmlSerializer(typeof(List<Light>)); TextWriter w = new StreamWriter("scene.xml"); s.Serialize(w, list); w.Close();
Allerdings bekomme ich immer diese nichtssagende Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs "System.InvalidOperationException" ist in System.Xml.dll aufgetreten.
Zusätzliche Informationen: Beim Generieren des XML-Dokuments ist ein Fehler aufgetreten.
Die Klasse Light und PointLight sehen so aus:
public class Light { // Common light properties which are valid for all light types public Color ambient; public Color diffuse; public Color specular; public LightType lightType; public Light() { } public Light(LightType lightType) { ambient = diffuse = specular = Color.White; this.lightType = lightType; } } public class PointLight : Light { public Vec3 position; public PointLight() { } public PointLight(Vec3 position) : base(LightType.Point) { this.position = new Vec3(position); } }
Weiß irgendwer was ich falsch mache und wie ich die ArrayList serialisieren kann?
-
Da sind mehrere Dinge noch bissle schief.
Alle Member der Klassen müssen serialisierbar sein, weiß nicht ob das bei dir der Fall ist. Und ohne zusätzliche Attribute gehen auch deine Klasseninformationen verloren, weil statt deinem PointLight nur der Light Anteil geschrieben werden würde.
Schau dir mal dieses Tutorial an. Dort gibts abschnitte die genau dieses Problem behandeln.
Auch solltest du mal nach der InnerException von deiner InvalidOperationException schaun. Meist liegt das Problem tiefer.