我试图在F#中使用Dapper dot net来执行一个简单的SQLite查询.Dapper返回一个动态对象的集合:在C#中使用它们是直接的,但根据我的理解,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
在这种情况下,实现?操作符的最好方法是什么?
这个线程 由几种解决方案组成,可以解决您的问题。特别是: FSharp.Interop.Dynamic 已在NuGet上提供,并可随时使用。