Beispiel #1
0
        //-------------------------------------------------------------------------
        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);
        }
Beispiel #2
0
        /// ////////////////////////////////////////////////////////
        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);
        }