Гены предоставленного типа Json не работают с

Вот фрагмент, который хорошо демонстрирует то, о чем я буду говорить:

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 имя экземпляра коллекции, но по какой-то причине я не могу создать другую слегка измененную версию структуры. Он говорит мне, что у элемента нет свойства с именем Имя, когда оно явно находится в строке перед ним, оно есть. Могу ли я по какой-то причине не использовать синтаксис «с» для этих библиотек?


person Hohohodown    schedule 19.07.2017    source источник


Ответы (1)


Поставщики типов могут прямо сейчас предоставлять только обычные типы .NET, а не записи F# и размеченные объединения. Синтаксис {x with ...} предназначен только для записей F#.

person TheQuickBrownFox    schedule 19.07.2017