I modifié la méthode d'extension Thorarin a donné en réponse à this question de travailler sur un int au lieu d'une chaîne:Int jeté erreur dans l'extension générique
public static TEnum ToEnum<TEnum>(this int intEnumValue, TEnum defaultValue)
{
if (!Enum.IsDefined(typeof(TEnum), intEnumValue))
return defaultValue;
return (TEnum)intEnumValue;
}
Le compilateur donne l'erreur « Impossible de convertir le type « int » à 'TEnum'. " sur la dernière ligne.
Si la ligne est modifiée à ceci:
return (TEnum)(object)intEnumValue;
compile et fonctionne.
Pourquoi l'int doit-il être converti en objet en premier?
Existe-t-il une méthode plus directe pour passer d'un type sous-jacent d'Enum à l'Enum? –
Enum.ToObject (typeof (TEnum), intEnumValue) en tant que TEnum – plinth