IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Collections imbriqué section personalisé .config


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut Collections imbriqué section personalisé .config
    Bonjour à tous,

    Voilà, je suis en train de personnaliser le fichier de configuration de mon appli avec un handeler maison, et j'arrive à faire ce genre de truc sans problemes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <masection>
     
      <macollection>
     
        <monitem param1="sdfsdf" param2="sfsgfv" />
        <monitem param1="bbbb" param2="szsz" />
        <monitem param1="mklmlk" param2="wxcw" />
     
      </macollection>
     
    </masection>
    Mais je cherche à faire quelque chose dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <masection>
     
      <macollection nom="sdf">
        <masouscollection>
          <monitem param1="sdfsdf" param2="sfsgfv" />
          <monitem param1="bbbb" param2="szsz" />
          <monitem param1="mklmlk" param2="wxcw" />
        </masouscollection>
     
        <masouscollection nom="jgh">
          <monitem param1="hhhh" param2="cxc" />
          <monitem param1="zfzdf" param2="szsz" />
          <monitem param1="mklmlk" param2="wxcw" />
        </masouscollection>
      </macollection>
     
    </masection>
    Mais pas moyen, je n'arrive rien à faire...

    J'ai beau retourner le net, je ne trouve pas la solution, pourtant, je sais que c'est possible !

    Merci d'avance à celui qui m'apportera la solution, parce que là, je bloque completement...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Je n'ai pas donné assé de précisions ?

    Quel types de renseignement faudrait il que j'apporte pour que cela inspire quelqu'un ?

    Merci d'avance pour votre aide

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    Salut,

    as-tu regardé ce tuto ?
    moi, je l'avais trouvé super quand j'ai voulu personnaliser mon app.config
    mais je ne sais pas s'il y a ce que tu cherches...

    bon courage

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    en faisant qqch du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class MaSousCollection : ConfigurationElement
        {
            private static readonly ConfigurationPropertyCollection _proprietes;
            private static readonly ConfigurationProperty prop1;
            private static readonly ConfigurationProperty prop2;
        }
     
    class MaCollection : ConfigurationElement
        {
            private static readonly ConfigurationPropertyCollection _proprietes;
            private static readonly MaSousCollection _prop;
        }
    ?...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Oui, je me suis basé sur ce tuto pour faire mon premier handeler, mais rien dans ce tuto ne semble m'aider pour faire ce que je veux faire.

    De plus, je suis débutant en C#, et je ne comprend pas vraiment comment ton code pourrais m'aider non plus....

    Pour plus de précision, voici mon handeler qui marche :

    perso.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
     
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
     
    /// <summary>
    /// Description résumée de perso
    /// </summary>
    public class perso : ConfigurationSection
    {
    	public perso()
    	{
    		//
    		// TODO*: ajoutez ici la logique du constructeur
    		//
    	}
     
        [ConfigurationProperty("macollection", IsDefaultCollection = false)]
        [ConfigurationCollection(typeof(macollectionCollection), AddItemName = "monitem")]
        public macollectionCollection Macollection
        {
     
            get
            {
                macollectionCollection macollection = (macollectionCollection)base["macollection"];
                return macollection;
            }
     
        }
     
    }
     
    public class macollectionCollection : ConfigurationElementCollection
    {
     
            public macollectionCollection()
            {
     
            }
     
            public override ConfigurationElementCollectionType CollectionType
            {
                get { return ConfigurationElementCollectionType.AddRemoveClearMap; }
            }
     
            protected override ConfigurationElement CreateNewElement()
            {
                return new monitem();
            }
     
            protected override Object GetElementKey(ConfigurationElement element)
            {
                return ((monitem)element).param1;
            }
     
     
            public new string AddElementName
            {
                get
                { return base.AddElementName; }
     
                set
                { base.AddElementName = value; }
            }
     
            public new string ClearElementName
            {
                get
                { return base.ClearElementName; }
     
                set
                { base.AddElementName = value; }
            }
     
            public new string RemoveElementName
            {
                get
                { return base.RemoveElementName; }
            }
     
            public new int Count
            {
     
                get { return base.Count; }
     
            }
     
            public monitem this[int index]
            {
                get
                {
                    return (monitem)BaseGet(index);
                }
                set
                {
                    if (BaseGet(index) != null)
                    {
                        BaseRemoveAt(index);
                    }
                    BaseAdd(index, value);
                }
            }
     
            new public monitem this[string param1]
            {
                get
                {
                    return (monitem)BaseGet(param1);
                }
            }
     
            public int IndexOf(monitem Monitem)
            {
                return BaseIndexOf(Monitem);
            }
     
            public void Add(monitem Monitem)
            {
                BaseAdd(Monitem);
                // code perso
     
            }
     
            public void Remove(monitem Monitem)
            {
                if (BaseIndexOf(Monitem) >= 0)
                {
                    BaseRemove(Monitem.param1);
                }
            }
     
            public void RemoveAt(int index)
            {
                BaseRemoveAt(index);
            }
     
            public void Remove(string param1)
            {
                BaseRemove(param1);
            }
     
            public void Clear()
            {
                BaseClear();
                // code perso
            }
     
    }
     
    public class monitem : ConfigurationElement
    {
     
        public monitem()
        {
     
     
        }
     
     
        [ConfigurationProperty("param1", IsRequired = true, IsKey = true)]
        public String param1
        {
     
            get
            { return (String)this["param1"]; }
            set
            { this["param1"] = value; }
     
        }
     
        [ConfigurationProperty("param2", IsRequired = true, IsKey = false)]
        public String param2
        {
     
            get
            { return (String)this["param2"]; }
            set
            { this["param2"] = value; }
     
        }
     
    }
    Ce handeler marche avec ce fichier de configuration :

    web.config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?xml version="1.0"?>
     
    <configuration>
     
      <configSections>
     
        <section name="masection" type="perso"/>
     
        </sectionGroup>
     
      <masection>
     
        <macollection>
     
          <monitem param1="sdfsdf" param2="sfsgfv" />
          <monitem param1="bbbb" param2="szsz" />
          <monitem param1="mklmlk" param2="wxcw" />
     
        </macollection>
     
      </masection>
     
    </configuration>
    Comme je le disait, j'aimerais savoir comment modifier mon handeler pour arriver à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <masection>
     
      <macollection nom="sdf">
        <masouscollection>
          <monitem param1="sdfsdf" param2="sfsgfv" />
          <monitem param1="bbbb" param2="szsz" />
          <monitem param1="mklmlk" param2="wxcw" />
        </masouscollection>
     
        <masouscollection nom="jgh">
          <monitem param1="hhhh" param2="cxc" />
          <monitem param1="zfzdf" param2="szsz" />
          <monitem param1="mklmlk" param2="wxcw" />
        </masouscollection>
      </macollection>
     
    </masection>

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    je n'ai jamais fais de sous collection dans mes app.condig

    mais as-tu essayé de créer une autre classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maCollection : ConfigurationElement
    sur le même modèle que ta classe 'monitem'
    mais au lieu d'avoir des membres de type ConfigurationProperty, elle aurait des membres de type 'monitem'...

    et dans ta classe macollectionCollection, tu remplaces les références à 'monitem' par la nouvelle classe 'maCollection'...

    dans le genre de ce que je mettais dans mon 2nd post

    j'espère être à peu près compréhensible...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Oui, je voix ce que tu veux dire.

    J'ai essayé de faire ça, mais dans ce cas, je ne peut mettre qu'un seul item masouscollection, ca sinon, il me dit que ce n'est pas permit d'en avoir plusieurs...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Par défaut
    Dans ce cas, un fichier de ce type ne te conviendrait-il pas?? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <configuration>
       <configSections>
        <section name="macollection1" type="MaCollection" />
        <section name="macollection2" type="MaCollection" " />
      </configSections>
     
      <macollection1>
          <monitem param1="sdfsdf" param2="sfsgfv" />
          <monitem param1="bbbb" param2="szsz" />
          <monitem param1="mklmlk" param2="wxcw" />
       </macollection>
     
      <macollection2>
          <monitem param1="hhhh" param2="cxc" />
          <monitem param1="zfzdf" param2="szsz" />
          <monitem param1="mklmlk" param2="wxcw" />
        </masouscollection2>
     </macollection2>
     
    </configuration>
    ??...


    j'ai trouvé également ça, y'a pas mal de trucs, mais je ne pense que ça t'aide plus

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Non, ça ne me convien pas parce que chaque collection doit être déclaré.

    Je veux une collection de collection.

    Par contre, je suis tres content de la doc que tu m'as fournit, c'est la première doc vraiment bien que je trouve sur ce sujet. Maintenant, je vais la compulser afin de voir si une solution à mon problème s'y trouve.

    Mais si au passage quelqu'un a une solution à me proposer pour mon probleme, qu'il n'hésite pas à me la communiquer, merci d'avance ^^

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 92
    Par défaut
    Bon, j'ai parcouru la documentation qui as répondu à de nombreuses question que je me posait sur la manipulation des .config, mais malheureusement pas sur le point qui m'interressait.

    Personne n'a de piste à ce sujet ?

    Merci d'avance pour votre aide !

Discussions similaires

  1. [2.x] Symfony 2 : formulaires de collections imbriquées
    Par ben.IT dans le forum Symfony
    Réponses: 4
    Dernier message: 17/12/2014, 11h50
  2. [SP-2007] chiffrer une section web.config
    Par abrmed dans le forum Développement Sharepoint
    Réponses: 3
    Dernier message: 30/05/2011, 21h53
  3. Parcours en profondeur de Collections imbriquées
    Par ErixSamson dans le forum Groovy
    Réponses: 0
    Dernier message: 09/07/2010, 16h01
  4. Réponses: 2
    Dernier message: 06/05/2009, 17h13
  5. Réponses: 19
    Dernier message: 23/12/2004, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo