/// <summary>
        /// Récupérer une propriété
        /// </summary>
        /// <param name="Nom"></param>
        /// <returns></returns>
        public ePropriete RecupererPropriete(String Nom)
        {
            Log.Methode(cNOMCLASSE);

            ePropriete Propriete = new ePropriete();

            if (Propriete.Init(this, Nom))
                return Propriete;

            return null;
        }
        /// <summary>
        /// Méthode interne
        /// Renvoi la liste des propriétés filtrée par les arguments
        /// Si NomARechercher est vide, toutes les propriétés sont renvoyées
        /// </summary>
        /// <param name="NomARechercher"></param>
        /// <returns></returns>
        public ArrayList ListeDesProprietes(String NomARechercher = "")
        {
            Log.Methode(cNOMCLASSE);

            ArrayList pListeProps = new ArrayList();

            if (_SwGestDeProprietes.Count > 0)
            {
                foreach (String pNom in _SwGestDeProprietes.GetNames())
                {
                    ePropriete Prop = new ePropriete();
                    if (Prop.Init(this, pNom) && Regex.IsMatch(pNom, NomARechercher))
                        pListeProps.Add(Prop);
                }
            }

            return pListeProps;
        }
        /// <summary>
        /// Teste l'existence d'une propriété
        /// </summary>
        /// <param name="Nom"></param>
        /// <returns></returns>
        public Boolean ProprieteExiste(String Nom)
        {
            ePropriete pProp = new ePropriete();

            return pProp.Init(this, Nom);
        }
        /// <summary>
        /// Ajouter une propriété
        /// </summary>
        /// <param name="Nom"></param>
        /// <param name="TypePropriete"></param>
        /// <param name="Expression"></param>
        /// <param name="EcraserExistante"></param>
        /// <returns></returns>
        public ePropriete AjouterPropriete(String Nom, swCustomInfoType_e TypePropriete, String Expression, Boolean EcraserExistante = false)
        {
            Log.Methode(cNOMCLASSE);

            // Si on écrase, on supprime la propriété
            if (EcraserExistante)
                _SwGestDeProprietes.Delete(Nom);

            // On la récupère
            ePropriete Propriete = RecupererPropriete(Nom);

            // Si elle n'existe pas on la crée et on lui assigne l'expression
            if (Propriete == null)
            {
                _SwGestDeProprietes.Add2(Nom, (int)TypePropriete, Expression);
                Propriete = new ePropriete();
                Propriete.Init(this, Nom);
            }

            // Si tout est ok, on la renvoi
            if (Propriete.EstInitialise)
                return Propriete;

            return null;
        }