Хотя ответ Марка не неправильный, он несколько излишний.
Enum.GetValues(type)
возвращает TEnum[]
, так что этот метод является своего рода ненужным, так как если вы знаете базовый тип, вы можете просто привести TEnum[]
к его базовому массиву типов.
var underlyingArray = (int[])Enum.GetValues(typeof(StringComparison));
является допустимым C #, который скомпилируется и не выдаст исключение во время выполнения. Поскольку вам нужен список, когда у вас есть массив, вы можете передать его конструктору List<Tunderlying>
или просто вызвать метод расширения ToArray()
.
Редактировать: вы можете написать функцию как таковую:
public static TUnderlying[] GetValuesAs<TUnderlying>(type enumType)
{
return Enum.GetValues(enumType) as TUnderlying[];
}
Но тогда вам придется сначала узнать базовый тип.