2012-02-20 8 views
7

F#でDapperドットネットを使用して、単純なSQLiteクエリを実行しようとしています。 Dapperは動的オブジェクトのコレクションを返します。C#でそれらを使用するのは簡単ですが、理解したところからF#はアウトオブボックスの動的プロパティ参照の実装がありません。F#のダッパドットネットクエリ

これが動作しているが、私は反射に頼ることなくこれを行うには良い方法があるとします

let (?) x prop = 
    let flags = BindingFlags.GetProperty ||| BindingFlags.InvokeMethod 
    x.GetType().InvokeMember(prop, flags, null, x, [||]) 

let doQuery() = 
    //... 
    let conn = new SQLiteConnection (connString) 
    conn.Open() 

    conn.Query("select first_name from customers") 
     |> Seq.map (fun c -> c ? first_name) 
     |> List.ofSeq 

実施するための最良の方法は何ですか?この場合の演算子?

+3

このスレッドはあなたの質問に答えているようです:http://stackoverflow.com/questions/6150087/f-dynamic-object-access – pad

+0

@pad –

+0

@OnorioCatenacci:私はそれを答えとして追加します、それは答えに値するとは確信していません:)。 – pad

答えて

6

This threadは、問題の解決策がいくつかあります。特にFSharp.Interop.DynamicはNuGetで利用でき、すぐに使用できます。

+0

私は、より簡単な方法(または外部ライブラリなし)があることを望んでいました。私は偉大な力/大きな責任などと思う... :-) –