J'essaie d'utiliser Dapper dot net dans F # pour effectuer une simple requête SQLite. Dapper renvoie une collection d'objets dynamiques: leur utilisation en C # est simple, mais d'après ce que j'ai compris, F # n'a pas d'implémentation de recherche de propriétés dynamique prête à l'emploi.
Cela fonctionne mais je suppose qu'il y a de meilleures façons de le faire sans avoir recours à la réflexion:
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
Quelle est la meilleure façon de mettre en œuvre le? opérateur dans ce cas?
Ce thread se compose de plusieurs solutions pour votre problème. En particulier, FSharp.Interop.Dynamic est disponible sur NuGet et prêt à l'emploi.