Как получить динамический доступ к свойствам записи F#.Data.SqlClient
У меня есть некоторые данные Record
s возвращается через провайдера F# Data SqlClient Type, используя такой код:
open FSharp.Data
[<Literal>]
let connectionString = "..."
[<Literal>]
let linksQuery = "SELECT Id, TheName, ... FROM Links"
type LinksQuery = SqlCommandProvider<linksQuery, connectionString>
let result = (new LinksQuery())
.AsyncExecute()
|> Async.RunSynchronously
let first = result.[0]
Теперь я хотел бы получить доступ к свойствам этого first
Record
динамически - какие свойства мне нужны, зависит от некоторого пользовательского ввода - они вводят key
,
Я знаю, что могу сделать это с помощью отражения в стиле C# с помощью кода:
let theType = first.GetType()
let theProp = theType.GetProperty("Item")
let theValue = theProp.GetValue(first, [| key |])
// now use `theValue` (which is sometimes a string and sometimes an Option(string)
Тем не менее, мне интересно, есть ли способ сделать это, используя более простой F#
В идеале я хотел бы использовать что-то вроде first.[key]
- но это утверждение возвращает ошибку The field, constructor or member "Item" is not defined