Problem/Bug komisches Verhalten bei Serialisierung (ISerializable)
-
Hallo ich habe eine Klasse Foo welche ein Array von "VertexElementEx" hat, welche serializierbar sind. Nun hab ich ein komisches verhalten festegestellt, oder bin ich "blind" was vergessen^^
Wenn ich nun das Array auf einen schalg serialisiere und wieder deserialsiere bekommt ich "NULL" zurück beim deseraliseren
Wenn ich jedes einzelne VertexElementEx-objekt serialisere und wieder deserailisere geht es?
Ich versteh das nicht!?!?!?!
[Serializable] class Foo, ISerializable { VertexElementEx[] Declaration{get; private set;} public Foo(SerializationInfo info, StreamingContext context) { // (B)Geht nicht Declaration = (VertexElementEx[])info.GetValue("Declaration", typeof(VertexElementEx[])); //------------------- // (A) Geht int count = (int)info.GetValue("DeclarationCount", typeof(int)); Declaration = new VertexElementEx[count]; for (int i = 0; i < count; i++) Declaration[i] = (VertexElementEx)info.GetValue("Declaration" + i, typeof(VertexElementEx)); //------------------- } public void GetObjectData(SerializationInfo info, StreamingContext context) { //(A) Geht nicht --- info.AddValue("DeclarationCount", Declaration.Count()); for (int i = 0; i < Declaration.Count(); i++) info.AddValue("Declaration" + i, Declaration.ElementAt(i)); //------------------- // (B)Geht nicht info.AddValue("Declaration", Declaration, typeof(VertexElementEx[])); //------------------- } }
-
Du Serialisierts ja auch einzelne Objekte in die Objectdata anstelle des Arrays. Aus den einzelnen Objekten wird nicht auf magische Weise wieder ein Array. Darum kannst Du auch nur einzelne Objekte de-serialisieren.
Wenn Du das ganze Arrays de-serialisieren willst mußt Du es schon auch als ganzes Serialisieren.
-
Nein, du verwechselt da was.. ich hab 2 Varianten im Code.. man muss sich eine wegdenken...
Wenn ich den Typ "VertexElementEx[]" serialisier, de-serialisier ich auch wieder in den Typ !!