Conversion d'enum en byte
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:
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:
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