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)
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.
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 { ... } }; }
Dans ma classe persister, l'abstractObject est décortiqué et finalement inséré en DB.
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".
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)); } ... }
Comment faire pour caster info.GetValue(..) en byte ?
Merci d'avance
Partager