You can use FSharpType.GetUnionCases()out Microsoft.FSharp.Reflectionto get all cases of discriminatory association. In your example, it will look like this:
type Interests =
| Music
| Books
| Movies
static member GetValue(this) = (...)
static member GetSeqValues() =
let cases = FSharpType.GetUnionCases(typeof<Interests>)
[ for c in cases do
let interest = FSharpValue.MakeUnion(c, [| |]) :?> Interests
yield GetValue(interest) ]
, GetValue, ( MakeUnion , ). , :
type Sample =
| A of int
| B of bool