//------------------------------------------------------------------------- private bool EditeVariable(IVariableDynamique variable) { if (variable == null) { return(false); } Type typeEditeur = CGestionnaireEditeursVariablesDynamiques.GetTypeEditeur(variable.GetType()); if (typeEditeur == null) { return(false); } IFormEditVariableDynamique frm = Activator.CreateInstance(typeEditeur) as IFormEditVariableDynamique; bool bResult = frm.EditeLaVariable(variable, m_elementAVariables); if (bResult) { ListViewItem item = GetItemForVariable(variable); if (item != null) { item.Text = variable.Nom; } } return(bResult); }
/// //////////////////////////////////////////////////////// public static CResultAErreur SerializeValeurVariable( ref object valeur, IVariableDynamique variable, C2iSerializer serializer, CContexteDonnee contexteDonnee, bool bAvecCompatibiliteSurVersionQuiTravaillaitDirectementDansCProcess) { int nVersion = GetNumVersion(); CResultAErreur result = CResultAErreur.True; if (!bAvecCompatibiliteSurVersionQuiTravaillaitDirectementDansCProcess) { result = serializer.TraiteVersion(ref nVersion); } if (!result) { return(result); } if (variable is CVariableDynamiqueSaisie || variable is CVariableDynamiqueSelectionObjetDonnee) { result = serializer.TraiteObjetSimple(ref valeur); } else { if (nVersion <= 11 && variable.GetType().ToString().IndexOf("CVariableProcessTypeComplexe") < 0) { //Avant, on ne serialisait que les variables complexes return(result); } Type tp = variable.TypeDonnee.TypeDotNetNatif; if (tp == typeof(int) || tp == typeof(double) || tp == typeof(string) || tp == typeof(DateTime) || tp == typeof(bool)) { if (nVersion >= 5) { if (variable.TypeDonnee.IsArrayOfTypeNatif) { IList lst = valeur as IList; serializer.TraiteListeObjetsSimples(ref lst); if (serializer.Mode == ModeSerialisation.Lecture) { valeur = lst; } } else { serializer.TraiteObjetSimple(ref valeur); } } } else if (typeof(IObjetDonneeAIdNumerique).IsAssignableFrom(tp)) #region ObjetAIdNumerique AUTO { if (!variable.TypeDonnee.IsArrayOfTypeNatif) { IObjetDonneeAIdNumerique objet = (IObjetDonneeAIdNumerique)valeur; SerializeObjetAIdAuto(nVersion, objet == null ? tp : objet.GetType(), ref objet, serializer, contexteDonnee); valeur = objet; } else { int nNb = 0; if (valeur != null) { nNb = ((IList)valeur).Count; } serializer.TraiteInt(ref nNb); switch (serializer.Mode) { case ModeSerialisation.Ecriture: if (valeur != null) { foreach (IObjetDonneeAIdNumerique objet in (IList)valeur) { IObjetDonneeAIdNumerique objetForRef = objet; SerializeObjetAIdAuto(nVersion, objetForRef == null ? tp : objetForRef.GetType(), ref objetForRef, serializer, contexteDonnee); } } break; case ModeSerialisation.Lecture: ArrayList lst = new ArrayList(); for (int nElt = 0; nElt < nNb; nElt++) { IObjetDonneeAIdNumerique element = null; SerializeObjetAIdAuto(nVersion, tp, ref element, serializer, contexteDonnee); if (element != null) { lst.Add(element); } } valeur = (IObjetDonneeAIdNumerique[])lst.ToArray(typeof(IObjetDonneeAIdNumeriqueAuto)); break; } } } else if (variable.TypeDonnee.TypeDotNetNatif.GetCustomAttributes(typeof(SerializableAttribute), true).Length > 0) { if (nVersion >= 13) { bool bHasObjet = valeur != null; serializer.TraiteBool(ref bHasObjet); if (bHasObjet) { result = serializer.TraiteSerializable(ref valeur); } } } #endregion } return(result); }