Bonjour à tous,

Je suis bloqué sur un problème que je ne parviens pas à résoudre. Je fais donc appel à vous :

J'ai généré un classe à partir d'une XSD via xsd.exe.
La XSD contient des listes transformées en énumérations de ce type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.1087.0")]
    [System.SerializableAttribute()]
    public enum BlocsListe
    {
        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("2 blocs")]
        Item2blocs,
        /// <remarks/>
        [System.Xml.Serialization.XmlEnumAttribute("4 blocs")]
        Item4blocs,
        /// <remarks/>
        ND,
    }
La property qui utilise cette énumération :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
private BlocsListe _typeBlocs;
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
        public BlocsListe TypeBlocs
        {
            get
            {
                return this._typeBlocs;
            }
            set
            {
                this._typeBlocs = value;
            }
        }
J'extraie des éléments de ma base de données via un DataReader et j'essaye ensuite d'affecter la valeur contenue en base de données à la propriété TypeBlocs de mon objet.

Et c'est là que je suis bloqué.
En base de données, c'est le contenu du XmlEnumAttribute qui est stocké.
J'ai donc des cas où je n'ai pas de valeurs en base de données, d'autre où j'ai bien une valeur correspondant à un item de l'énumération et des cas où la valeur stockée dans la base ne correspond à aucun item de l'énumération.

Je cherche à parser le contenu de mon DataReader pour trouver la correspondance avec un des XmlEnumAttribute pour ensuite affecter ma propriété.
Et je bloque sur ce point.

Pour simplifier la chose, certaines autres énumérations ne contiennent pas de XmlEnumAttribute (cf. le "ND" de l'énumération ci-dessus).

Si vous avez des conseils, je suis preneur.

Merci d'avance