Problème de Serialisation: ArrayList dans ArrayList
	
	
		Bonjour à tous et tout d'abord merci pour l'aide que vous apportez au monde du développement (donc à moi :-)). 
Je suis face à un problème sur lequel je galère depuis 2 semaines. Je vais essayer de faire court sans coller 3000 lignes de code...
J'ai créé un objet appellé DCollection qui implémente la classe KeyedCollection<TKey, TValue> et les 2 interfaces IDictionary<TKey, TValue> et IXmlSerializable. 
Dans cette classe j'ai écrit 2 méthodes qui posent problème pour le cas ou ma collection contient une "sous-collection":
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 
 |  
public string ToXml()
        {
            StringBuilder sb = new StringBuilder();
            StringWriter sWriter = new StringWriter(sb);
            XmlSerializer serializer = new XmlSerializer(typeof(List<TValue>));
 
            serializer.Serialize(sWriter, base.Items);
 
            sWriter.Close();
            sWriter.Dispose();
 
            return sb.ToString();
        }
        public string ToXml(Type[] ExtraTypes)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter sWriter = new StringWriter(sb);
            XmlSerializer serializer = new  
 
            XmlSerializer(typeof(List<TValue>),ExtraTypes);
 
            serializer.Serialize(sWriter, base.Items);
 
            sWriter.Close();
            sWriter.Dispose();
 
            return sb.ToString();
        } | 
 Admettons que mon objet principal que je souhaite sérialiser soit un object de type "DCollection<int,ScheduleSet>" et que chaque objet de type "ScheduleSet" contient un objet de type "DCollection<int,ScheduleSetParam>"
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 
 |  
 
 [Serializable]
    public class ScheduleSet
    {
        private int _id;
        private string _name;
        private DCollection<int,ScheduleSetParam> _params;
 
        public ScheduleSet()
        {
            _params = new DCollection<int, ScheduleSetParam>();
            _status = new DCollection<int, Status>();
            _status.Add(45, new Status(46, "Test"));
        }
        public ScheduleSet(int id, string name, DCollection<int, ScheduleSetParam> prms)
        {
            Id = id;
            Name = name;
            Params = prms;
        }
        public int Id
        {
            get { return _id;}
            set { _id = value;}
        }
        public string Name
        {   
            get { return _name; }
            set { _name = value; }
        }
        public DCollection<int, ScheduleSetParam> Params
        {
            get { return _params; }
            set { _params = value; }
        }
    }
 
[Serializable]
    public abstract class ScheduleSetParam
    {
        private int _id;
        private CrystalParam _param;
 
        public abstract object Value
        {
            get;
            set;
        }
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }
        public CrystalParam Param
        {
            get { return _param; }
            set { _param = value; }
        }
 
    } | 
 La classe ScheduleSetParam est une classe abstraite dont héritent 3 Classes: IntParam, StringParam et IntParam qui ont bien le flag [Serializable] sur leur tête.
La serialisation d'un objet "DCollection<int,ScheduleSet>" echoue avec l'erreur 
	Citation:
	
		
		
			System.InvalidOperationException: WriteStartDocument doit être le premier appel.
			
		
	
 La serialisation réussit si je rajoute le flag [XmlIgnoreAttribute] devant la propriété "Params" de la classe 
Voici comment je fais appel à ma méthode ToXml():
	Code:
	
xml_SetParams.DocumentContent = Sess_Schedule.Sets.ToXml(new Type[] { typeof(ScheduleSetParam) });
 Voila j'espère n'avoir rien oublié d'essentiel pour la compréhension de mon problème et vous remercie d'avance pour votre précieuse aide.