Je veux créer une méthode qui accepte un type Enum
, et renvoie toute l'énumération à l'intérieur d'un tableau, comment créer une telle fonction?Obtenir toutes les valeurs d'énumération
Prenez par exemple, j'ai deux énumérations:
public enum Family
{
Brother,
Sister,
Father
}
public enum CarType
{
Volkswagen,
Ferrari,
BMW
}
Comment créer une fonction GetEnumList
afin qu'elle retourne
{Family.Brother, Family.Sister, Family.Father}
pour le premier cas.{CarType.Volkswagen, CarType.Ferrari, CarType.BMW}
pour le second cas.
J'ai essayé:
private static List<T> GetEnumList<T>()
{
var enumList = Enum.GetValues(typeof(T))
.Cast<T>().ToList();
return enumList;
}
mais je me suis un InvalidOperationException
:
System.InvalidOperationException : Late bound operations cannot be performed on types or methods for which ContainsGenericParameters is true.
at System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException()
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
Edit: Le code ci-dessus fonctionne fine-- la raison pour laquelle je suis une exception a été parce que profileur a causé moi le bug. Merci à tous pour votre solution.
Cela a bien fonctionné pour moi - pouvez-vous poster le code appelant? – RobS
Oui, ça marche bien - J'ai trouvé que mon profileur me causait un bug et donc l'exception. – Graviton