/// //////////////////////////////////////////////////////// protected override CResultAErreur MySerialize(sc2i.common.C2iSerializer serializer) { int nVersion = GetNumVersion(); CResultAErreur result = serializer.TraiteVersion(ref nVersion); if (!result) { return(result); } if (serializer.Mode == ModeSerialisation.Lecture && serializer.GetObjetAttache(typeof(CContexteDonnee)) != null) { ContexteDonnee = (CContexteDonnee)serializer.GetObjetAttache(typeof(CContexteDonnee)); } else { ContexteDonnee = CContexteDonneeSysteme.GetInstance(); } serializer.TraiteInt(ref m_nIdNextObjet); if (nVersion > 0) { bool bHasType = TypeCible != null; serializer.TraiteBool(ref bHasType); if (bHasType) { serializer.TraiteType(ref m_typeCible); } else { m_typeCible = null; } } else { m_typeCible = null; } //Lit les variables en premier car on en a besoin dans les actions serializer.AttacheObjet(typeof(IElementAVariablesDynamiquesBase), this); if (result) { result = serializer.TraiteArrayListOf2iSerializable(m_listeVariables, this); } foreach (IVariableDynamique variable in m_listeVariables) { if (variable.IdVariable == c_strIdVariableElement) //TESTDBKEYOK { m_variableCible = (CVariableProcessTypeComplexe)variable; } } if (serializer.Mode == ModeSerialisation.Lecture) { foreach (IVariableDynamique var in m_listeVariables) { if (var.IdVariable == c_strIdVariableElement && var is CVariableProcessTypeComplexe) { m_variableCible = (CVariableProcessTypeComplexe)var; m_typeCible = m_variableCible.TypeDonnee.TypeDotNetNatif; m_bSurTableauDeCible = m_variableCible.TypeDonnee.IsArrayOfTypeNatif; } } } result = serializer.TraiteArrayListOf2iSerializable(m_listeActions, this); if (result) { result = serializer.TraiteArrayListOf2iSerializable(m_listeLiensActions, this); } serializer.DetacheObjet(typeof(IElementAVariablesDynamiquesBase), this); //Lit les valeurs des variables if (nVersion > 2) { result = SerializeValeursVariables(nVersion, serializer); } if (nVersion >= 3) { serializer.TraiteBool(ref m_bModeAsynchrone); } else { m_bModeAsynchrone = false; } if (nVersion >= 4) { serializer.TraiteString(ref m_strLibelle); } AssureVariableCible(); if (nVersion >= 5) { I2iSerializable objet = m_infoDeclencheur; serializer.TraiteObject(ref objet); m_infoDeclencheur = (CInfoDeclencheurProcess)objet; } if (nVersion >= 7) { serializer.TraiteBool(ref m_bSurTableauDeCible); } else { m_bSurTableauDeCible = false; } if (nVersion >= 9) { serializer.TraiteString(ref m_strLastErreur); } else { m_strLastErreur = ""; } if (nVersion >= 10) { if (nVersion < 14 && serializer.Mode == ModeSerialisation.Lecture) { int nIdTemp = -1; serializer.TraiteInt(ref nIdTemp); m_strIdVariableRetour = nIdTemp.ToString(); } else { serializer.TraiteString(ref m_strIdVariableRetour); } } Dictionary <int, I2iObjetGraphique> dicIdToObjet = null; if (nVersion >= 12) { int nbEle = m_ordreZ.Count; serializer.TraiteInt(ref nbEle); if (serializer.Mode == ModeSerialisation.Lecture) { dicIdToObjet = new Dictionary <int, I2iObjetGraphique>(); foreach (CAction action in ListeActions) { dicIdToObjet[action.IdObjetProcess] = action; } foreach (CLienAction lien in ListeLiens) { dicIdToObjet[lien.IdObjetProcess] = lien; } m_ordreZ.Clear(); for (int n = 0; n < nbEle; n++) { int nId = 0; serializer.TraiteInt(ref nId); I2iObjetGraphique objTmp = null; if (dicIdToObjet.TryGetValue(nId, out objTmp)) { m_ordreZ.Add((IObjetDeProcess)objTmp); } } } else if (serializer.Mode == ModeSerialisation.Ecriture) { foreach (IObjetDeProcess objet in m_ordreZ) { int nCopy = objet.IdObjetProcess; serializer.TraiteInt(ref nCopy); } } } else { m_ordreZ = new List <IObjetDeProcess>(); foreach (CAction action in ListeActions) { m_ordreZ.Add(action); } foreach (CLienAction lien in ListeLiens) { m_ordreZ.Add(lien); } } if (nVersion >= 13) { serializer.TraiteBool(ref m_bModeTransactionnel); } else { m_bModeTransactionnel = false; } return(result); }