//////////////////////////////////////////////////////////// public override CResultAErreur Serialize(C2iSerializer serializer) { CResultAErreur result = CResultAErreur.True; int nVersion = GetNumVersion(); result = serializer.TraiteVersion(ref nVersion); if (result) { result = base.Serialize(serializer); } if (!result) { return(result); } bool bHasConteneur; serializer.TraiteString(ref m_strNomTableFille); int nNbChampsFille = m_strChampsFille.Length; serializer.TraiteInt(ref nNbChampsFille); switch (serializer.Mode) { case ModeSerialisation.Ecriture: foreach (string strChamp in m_strChampsFille) { string strTmp = strChamp; serializer.TraiteString(ref strTmp); } break; case ModeSerialisation.Lecture: m_strChampsFille = new string[nNbChampsFille]; for (int nChamp = 0; nChamp < nNbChampsFille; nChamp++) { string strTmp = ""; serializer.TraiteString(ref strTmp); m_strChampsFille[nChamp] = strTmp; } break; } switch (serializer.Mode) { case ModeSerialisation.Ecriture: bHasConteneur = m_objetConteneur != null; serializer.TraiteBool(ref bHasConteneur); if (bHasConteneur) { Type tp = m_objetConteneur.GetType(); serializer.TraiteType(ref tp); object[] lstValeurs = m_objetConteneur.GetValeursCles(); int nNbValeurs = lstValeurs.Length; serializer.TraiteInt(ref nNbValeurs); foreach (object obj in lstValeurs) { object obj_tmp = obj; serializer.TraiteObjetSimple(ref obj_tmp); } } break; case ModeSerialisation.Lecture: bHasConteneur = false; serializer.TraiteBool(ref bHasConteneur); if (!bHasConteneur) { m_objetConteneur = null; } else { Type tp = null; serializer.TraiteType(ref tp); #if PDA m_objetConteneur = (CObjetDonnee)Activator.CreateInstance(tp); m_objetConteneur.ContexteDonnee = m_contexte; #else m_objetConteneur = (CObjetDonnee)Activator.CreateInstance(tp, new object[] { m_contexte }); #endif int nNbCles = 0; serializer.TraiteInt(ref nNbCles); object[] lst = new object[nNbCles]; for (int nCle = 0; nCle < nNbCles; nCle++) { serializer.TraiteObjetSimple(ref lst[nCle]); } m_objetConteneur.PointeSurLigne(lst); } break; } if (serializer.Mode == ModeSerialisation.Lecture) { Init(m_objetConteneur, m_strNomTableFille, m_strChampsFille, m_bAppliquerFiltreParDefaut); } return(result); }