Comment obtenir Enum objet par valeur en C#?
J'ai récemment rencontré un cas quand j'en avais besoin pour obtenir un Enum objet par valeur (pour être enregistrés via EF CodeFirst), et voici mon Enum:
public enum ShipmentStatus {
New = 0,
Shipped = 1,
Canceled = 2
}
J'ai donc besoin d'obtenir ShipmentStatus.Shipped
objet par valeur 1.
Alors comment pouvais-je le réaliser?
- C'est une bonne Q, si elle a été discuté avant sur plusieurs threads.
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas utiliser cette version en fonction?
Cela devrait fonctionner, soit (juste le casting du
int
de la valeur àenum
type):Attention, il peut provoquer une erreur si l'enum n'est pas défini.
Après quelques affrontements avec Enum j'ai créé cette universelle de la classe helper qui va faire ce dont j'avais besoin - prise en clé en valeur, et plus important encore - de TOUTE Enum type:
Donc, pour obtenir Enum objet
ShipmentStatus.Shipped
ce sera de retour cet objet:Donc, fondamentalement vous pouvez utiliser n'importe quel Enum objet et obtenir sa clé en valeur:
Enum
. Selon la documentation pourEnum.ToObject
il ne fait que vérifier. Vous pouvez utiliserEnum.IsDefined
pour que.