コード引用符を使ったプロパティ名の取得
コード引用符<@ @>を使うことで式を取得できます。C#のExpression
なんかおもしろいことができそうな気がします。
Personレコードをのプロパティを指定してその名前を取得するコードを書いてみました。
open Microsoft.FSharp.Quotations
open Microsoft.FSharp.Quotations.Patterns
open NUnit.Frameworktype Person =
{ FirstName:string;
LastName:string;
Age:Option<int> }let PersonProto =
{ Person.FirstName = "";
LastName = "";
Age = None }let convert exprList =
let resolve (expr : Expr) =
match expr with
| PropertyGet(_, property, _) ->
property.Name
| _ -> invalidOp "%A is not property."
List.map resolve exprList[<Test>]
let ``test expr``() =
let exprList : Expr list =
[ <@ PersonProto.FirstName @>;
<@ PersonProto.LastName @>;
<@ PersonProto.Age @> ]let resultList = convert exprList
Assert.AreEqual(["FirstName"; "LastName"; "Age"], resultList)