【发布时间】:2014-06-12 11:01:06
【问题描述】:
我正在学习类型提供程序,它看起来像是一个开创性的功能。但是,我无法使用 JsonProvider 反序列化 json,以便目标类型具有 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。可以覆盖吗?
【问题讨论】:
标签: f# type-providers f#-data