Вы можете использовать Enum.GetValues
, который возвращает Array
объектов, которые вам затем необходимо уменьшить до целых значений. (Примечание: я использую реализацию Mono F #; возможно, с .NET все по-другому.)
Вот некоторые функции, которые я написал, чтобы получить список всех значений перечисления и получить минимальное и максимальное значения:
open System
module EnumUtil =
/// Return all values for an enumeration type
let EnumValues (enumType : Type) : int list =
let values = Enum.GetValues enumType
let lb = values.GetLowerBound 0
let ub = values.GetUpperBound 0
[lb .. ub] |> List.map (fun i -> values.GetValue i :?> int)
/// Return minimum and maximum values for an enumeration type
let EnumValueRange (enumType : Type) : int * int =
let values = EnumValues enumType
(List.min values), (List.max values)