Я изучаю поставщиков типов, и это похоже на новаторскую функцию. Однако мне не удается десериализовать json с помощью JsonProvider, чтобы у целевого типа было свойство Generic.Dictionary. Это можно сделать с помощью Json.NET. Вот код:
type ByProv = JsonProvider<"""{"dict":{"A":1,"B":2}}""">
type ByHand(d:Dictionary<string,int>) =
member val dict = d with get,set
let text = """{"dict":{"C":3,"D":4}}"""
let newt = JsonConvert.DeserializeObject<ByHand> text
let prov = ByProv.Parse text
printfn "%A" newt.dict.["C"]
//Can only call statically inferred A or B (and it will throw at run-time)
printfn "%A" prov.Dict.A
По-видимому, dict
по умолчанию считается типом записи, а не Dictionary
. Можно ли это переопределить?