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 !!


Anmelden zum Antworten