Non è possibile. Puoi solo citare il codice, vale a dire qualsiasi valid F# expression. Le definizioni di tipo non sono considerate come codice, ma definizioni.
Cosa si potrebbe desiderare di fare è mettere ReflectedDefinition
attributo su un soci Type:
type MyType (name : string) =
[<ReflectedDefinition>] member x.Name = name
Se si desidera recuperare l'AST di membri che hanno ReflectedDefinition
è possibile utilizzare la funzione Expr.TryGetReflectedDefinition
.
per esempio, questo codice di esempio quadri AST di tutti i membri definizione riflesse 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 _ ->()
()