いくつかのAPIを介して、Gereric.Dictionaryのシーケンスの形式でテーブルの種類にアクセスできます。テーブルにはスキーマがありますから、レコードを抽出したいのです。ここには何がありますか?私が呼び出すことができるように一般辞書からレコードを抽出するには?
open System.Collections.Generic
let gd = Dictionary<string,obj>()
gd.Add("name", "Frank")
gd.Add("age", 24)
gd.Add("born", 1999)
type Person = { name : string
age : int}
let extractPerson (gd:Dictionary<string,obj>) =
{ name = gd.["name"] :?> string
age = gd.["age"] :?> int}
は私が
let extract<'T> (gd:Dictionary<string,obj>) =
// ???
のように、機能extractPerson
は、より一般的なことはできますか?
extract<Person> gd
どのように '' <'T>仕事を抽出します:次のように
今、あなたはそれを使用することができますか?辞書の各キーを使用してレコードの同じ名前のプロパティを設定する方法はありますか? – DaveShaw
はい、ちょうど辞書 – fbehrens
のFキーに一致するキーでレコードを記入してください。リフレクションや[DLR](https://www.nuget.org/packages/FSharp.Interop)のようなものを使用する必要があります。 .Dynamic /)をこれに割り当てます。コンパイル時にキーのリストを知っていれば、コード生成や型プロバイダを調べることができます(ただし、これはボックスの外にあるとは限りません)。 – DaveShaw