获取字符串列表形式的记录类型标签

ryt*_*ido 2 f#

是否可以将记录类型的标签作为字符串列表获取?例如,给定以下类型:

type Person = {
    Name: string
    Age: int
}
Run Code Online (Sandbox Code Playgroud)

我想要一个可以给我的功能["Name"; "Age";]

Ast*_*sti 5

您可以使用FSharp.Reflection.FSharpType.GetRecordFields来获取记录类型的属性信息,从中您可以获取字段名称。

 let props = FSharp.Reflection.FSharpType.GetRecordFields(typeof<Person>)
 let names = props |> Array.map(fun prop -> prop.Name)
 printfn "%A" names
Run Code Online (Sandbox Code Playgroud)

输出:

[|"Name"; "Age"|]
Run Code Online (Sandbox Code Playgroud)