Я хочу создать метод, который принимает тип Enum
и возвращает все его члены в массиве. Как создать такую функцию?
Взять, к примеру, у меня есть два перечисления:
public enum Family
{
Brother,
Sister,
Father
}
public enum CarType
{
Volkswagen,
Ferrari,
BMW
}
Как создать функцию GetEnumList
, чтобы она возвращала
{Family.Brother, Family.Sister, Family.Father}
для первого случая.
{CarType.Volkswagen, CarType.Ferrari, CarType.BMW}
для второго случая.
Я пытался:
private static List<T> GetEnumList<T>()
{
var enumList = Enum.GetValues(typeof(T))
.Cast<T>().ToList();
return enumList;
}
Но я получил InvalidOperationException
:
System.InvalidOperationException: Операции с поздним связыванием не могут быть выполнены для типов или методов, для которых ContainsGenericParameters имеет значение true.
в System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException ()
в System.Reflection.RuntimeMethodInfo.Invoke (Object obj, BindingFlags invokeAttr, Binder Binder, параметры Object [], CultureInfo culture, логическое skipVisibilityChecks)
в System.Reflection.RuntimeMethodInfo.Invoke (Object obj, BindingFlags invokeAttr, Binder binder, Object [] параметры, CultureInfo culture)
в System.Reflection.MethodBase.Invoke (параметры объекта, параметры объекта [])
Редактировать: Приведенный выше код работает нормально - причина, по которой я получил исключение, была в том, что профилировщик вызвал у меня ошибку. Спасибо всем за ваши решения.