Json提供的类型gens不能与" {"

时间:2017-07-19 18:10:12

标签: json f# f#-data fscheck fsharp.data.typeproviders

这是一个片段,展示了我将要谈论的内容:

open FsCheck
open FsCheck.Gen
open FSharp.Data

type Test = JsonProvider<"""{"collection": [ { "Name": "Rob", "Age": 3 } ] } """>
let testGen () = 
  gen {
       let! name = Arb.generate<string>
       let! age  = Arb.generate<int>
       let colObj = Test.Collection(name, age)
       return Test.Root([|colObj|])
      }

let specialTestGen () = 
  gen {
       let! test = testGen ()
       let item = test.Collection.[0]
       let foo = item.Name
       let changedItem = {item with Name = "Chris"}
       return {test with test.collection = [|changedItem|]}
      }

我试图不断创造一些领域。我可以为foo分配集合实例的名称,但由于某种原因,我无法构建另一个稍微修改过的stuct版本。它告诉我item没有名为Name的属性,当它清楚地在它之前的行上时,它确实如此。我可以不使用&#34;和#34;出于某种原因,这些库的语法是什么?

1 个答案:

答案 0 :(得分:4)

类型提供程序现在只能提供普通的.NET类型,而不能提供F#记录和区分联合。 {x with ...}语法仅适用于F#记录。