Bonjour,

je rencontre un problème assez dérangeant dans l'implémentation de mon programme en c#.


J'ai tout d'abord un objet Transaction contenant une énumérée TransactionTypeEnum (en champs et en property)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public class Transaction : AbstractObject {
    private TransactionTypeEnum type;
 
    ...
    public TransactionTypeEnum Type { get { ... }, set { ... } };
}
Je dois passer cet objet transaction à mon persister pour le sauvegarder en db. Pour un souçi d'indépendance je passe la transaction sous forme d'un AbstractObject.

Dans ma classe persister, l'abstractObject est décortiqué et finalement inséré en DB.

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
public virtual void Insert(AbstractObject absObj, string table) {
            ...

            OrderedDictionary values = new OrderedDictionary();

            PropertyInfo[] props = absObj.GetType().GetProperties();
            foreach (PropertyInfo info in props){
                
                   if (info.PropertyType.Name.EndsWith("Enum")) {
                
                    try {
                        values.Add(info.Name, (byte)info.GetValue(absObj, null));
                    } catch (Exception ex) {
                        LogHelper.Logger.WriteLine(ex.GetType().ToString());
                        LogHelper.Logger.WriteLine(ex.Source + ";" + ex.Message);
                        throw ex;
                    }

                } else values.Add(info.Name, info.GetValue(absObj, null));
            }
            ...
}
Le probleme vient ici de la ligne en gras. info.GetValue(..) renvoie mon enum sous la forme d'un object qui n'est pas possible de "caster" en byte. Si je fais info.GetValue().ToString() il me renvoie "Administrative".

Comment faire pour caster info.GetValue(..) en byte ?

Merci d'avance