No puede. Solo puede citar el código, es decir, cualquier valid F# expression. Las definiciones de tipos no se consideran como código, sino como definiciones.
Lo que es posible que desee hacer es poner ReflectedDefinition
atributo en un miembros de tipo:
type MyType (name : string) =
[<ReflectedDefinition>] member x.Name = name
Si desea recuperar el AST de miembros que tiene ReflectedDefinition
puede utilizar Expr.TryGetReflectedDefinition
función.
por ejemplo, este código de ejemplo imprime AST de todos los miembros de definición reflejadas de MyType
:
open Microsoft.FSharp.Quotations
open System.Reflection
type MyType (name : string) =
[<ReflectedDefinition>] member x.Name = name
let mis = typeof<MyType>.GetMembers()
for mi in mis do
try
match Expr.TryGetReflectedDefinition(mi :?> MethodBase) with
| Some(e) -> printfn "%A" e
| None ->()
with _ ->()
()