2016-12-06 4 views
2

FsCheckは、NUnitの統合でカスタムArbitraryすることができます:F#構文を使用して型を属性パラメータとして渡す方法は?

[<Property(Verbose = true, Arbitrary= [typeof<Test.Arithmetic.MyArb>])>] 
static member MultiplyIdentity (x: int64) = x * 1 = x 

この構文は動作しません。私は尋ねるにはちょっと恥ずかしいと感じますが、明らかに私は前にこれを必要としませんでした:あなたはF#の型を属性パラメータとしてどのように指定しますか?マイクロソフトsays nothing about itWikibooks projectと私はこの問題を抱えています(タイプは遍在しています)。

注1:ArbitraryのパラメータはType []です。

答えて

4

あなたが[| 1;2;3 |]を使用して、配列リテラルたい、私はあなたが近くにいると思うが、[1;2;3]list<int>を作成します。

[<Property(Verbose = true, Arbitrary= [| typeof<Test.Arithmetic.MyArb> |])>] 
static member MultiplyIdentity (x: int64) = x * 1 = x 
+0

私の質問を書くときにはい、私は私のリストの構文に注意を示していませんでした。あなたは正しいですが、私は実際に 'Type'を得ることに焦点を当てていましたが、あなたの構文をコピーするのに_これは有効な定数式またはカスタム属性値ではありません。この文法は再現できますか? – Abel

+1

ここで動作します:https://github.com/fscheck/FsCheck/blob/master/tests/FsCheck.Test/Runner.fs#L21 –

+0

私の悪いです。最初のエラーはF#のツールチップエラーで隠されていましたが、_タイプ "MyArb 'が定義されていません" _私は 'Tests.Arithmetic.MyArb'を持っていましたが、' typeof'を使用すると、 FQN ???いずれにせよ、私が 'typeof 'に簡略化したとき、それはちょうどうまくいった。私自身の愚かさに惑わされた;)。 – Abel

関連する問題