Serialisierung abgeleiteter Klassen im Array



  • Hi,

    Ich habe eine Basisklasse A. Von A leiten sich B und C ab.

    Nun hab ich eine Klasse mit einem Array, das serialisierbar sein soll:

    [Serializable]
    public class Serialized
    {
    	public A[] SomeArray;
    }
    

    In diesem Array sollen Bs und Cs vorkommen.
    Damit die Klasse 'Serialized' auch anstaendig serialisiert werden kann, muss ich gemaess
    http://msdn.microsoft.com/en-us/library/2baksw0z(VS.71).aspx
    mithilfe von Attributen vorhersagen, welche Klassen in diesem Array auftachen koennen:

    [Serializable]
    public class Serialized
    {
    	[XmlArrayItem(Type = typeof(A)),
    	[XmlArrayItem(Type = typeof(B)),
    	[XmlArrayItem(Type = typeof(C))]
    	public A[] SomeArray;
    }
    

    Das Problem ist, dass ich es nicht wirklich verhersagen kann. Sobald ich in einer separaten DLL eine Klasse
    D erstelle, die ebenfalls von A ableitet und in 'SomeArray' gespeichert werden soll, wird das Programm
    zur Laufzeit fehlschlagen.

    Mein erster Ansatz war, das Attribut XmlArrayItem zur Laufzeit an SomeArray anzuhaengen. Habe aber erfahren,
    dass die Attribute statisch zur Compilezeit festgelegt werden.

    Weiss jemand einen anderen Ansatz?



  • Hat sich erledigt; habe das gefunden: http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic42061.aspx

    Die Kunst besteht darin, den Konstruktor XmlSerializer(Type type, Type[] extraTypes) zu nehmen!


Anmelden zum Antworten