Вот как использовать аргумент типа, как подсказал dumetrulo:
let testDisUnion<'a> =
SimpleUnionCaseInfoReflection.AllCases<'a>
|> Seq.iter (fun (_, instance) -> printfn "name: %A" instance)
testDisUnion<MyType>
//name: A
//name: B
type MyType = A | B
Аргумент типа <'a>
передается из вашей "функции" в AllCases
"функцию". Я пишу функцию в кавычках, потому что, хотя нет подходящих параметров, аргумент типа является типом ввода в функцию, что означает, что значение оценивается только тогда, когда вы «вызываете» его с аргументом типа.