2017-07-19 12 views
3

「で」では動作しません、私はうまく話だろう何を示してい抜粋です: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|]} 
     } 

私はgen'dいくつかのフィールドで世代を作るしようとしています常に。コレクションインスタンスの名前をfooに割り当てることはできますが、何らかの理由でもう少し修正されたstuctのバージョンを構築することはできません。それは私に、Nameという名前のプロパティを持っていないことを伝えます。これらのライブラリを何らかの理由で "with"構文で使用することはできませんか?

答えて

4

プロバイダは、F#レコードおよび差別化された共用体ではなく、通常の.NETタイプしか提供できません。 {x with ...}の構文はF#レコードのみです。

関連する問題