J’écris une fonction utilitaire qui obtient un entier de la firebase database et renvoie un enum saisi à l’application.
Voici ce que j’ai essayé de faire (notez que je passe un nom de lecteur de données et de colonne au lieu de l’ int
dans ma fonction réelle):
public static T GetEnum(int enumAsInt) { Type enumType = typeof(T); Enum value = (Enum)Enum.ToObject(enumType, enumAsInt); if (Enum.IsDefined(enumType, value) == false) { throw new NotSupportedException("Unable to convert value from database to the type: " + enumType.ToSsortingng()); } return (T)value; }
Mais cela ne me laissera pas jeter (T)value
disant:
Impossible de convertir le type ‘System.Enum’ en ‘T’.
J’ai aussi lu pas mal de commentaires mitigés sur l’utilisation d’ Enum.IsDefined
. En ce qui concerne les performances, cela semble très mauvais. Comment puis-je garantir une valeur valide?
Comme ça:
return (T)(object)value;
Change ça:
Enum value = (Enum)Enum.ToObject(enumType, enumAsInt);
pour ça:
T value = (T)Enum.ToObject(enumType, enumAsInt);
et retirez la dissortingbution 🙂