Pregunta

Estoy tratando de usar Dapper Dot Net en F# para realizar una consulta SQLite simple. Dapper devuelve una colección de objetos dinámicos: usarlos en C# es sencillo, pero de lo que entendí que F# no tiene implementación de búsqueda de propiedad dinámica fuera de la caja.

Esto está funcionando, pero supongo que hay mejores formas de hacerlo sin recurrir a la reflexión:

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

¿Cuál es la mejor manera de implementar el? operador en este caso?

¿Fue útil?

Solución

Este hilo Consiste en varias soluciones para su problema. Especialmente, Fsharp.interop.dynamic está disponible en Nuget y listo para usar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top