Je ne sais pas comment convertir la ligne suivante de VB en C #: Ma version ne fonctionne pas: p> public static void BindToEnum<T>()
{
List<T> values = new List<T>(System.Enum.GetValues(typeof(T)));
//...
}
3 Réponses :
Utilisation LINQ:
List<T> list = System.Enum.GetValues(typeof(T)) .Cast<T>() .ToList<T>();
Il suffit d'ajouter un .cast
Basé sur ce post, je me suis créé une fonction pour le faire pour moi; C'est formidable dans des tests unitaires lorsque vous souhaitez faire boucler toutes les valeurs d'une énorme pour vérifier que quelque chose ne fonctionne que sur certaines valeurs.
var values = GetEnumValues<SomeTypeCode>(); var typesToAlwaysShow = values.Where(ScreenAdapter.AlwaysShowThisType).Select(q => (int)q).ToList(); Assert.Equal("101,102,105,205", string.Join(",", typesToAlwaysShow));
Peut être amélioré en ajoutant où T: Enum code>