2016-12-06 10 views
2

FsCheck는 NUnit과 통합에 사용자 정의 Arbitrary 수 있습니다 :F # 구문을 사용하여 특성 매개 변수로 Type을 전달하는 방법은 무엇입니까?

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

이 구문은 작동하지 않습니다. 나는 약간 부끄럽다는 느낌이 들지만 분명히 필자는 이것을 결코 필요로하지 않았다 : F #에서 타입을 애트리뷰트 파라미터로 어떻게 지정 하는가? Microsoft says nothing about it도 아니고 Wikibooks project도 아니며 Google 검색에 문제가 있습니다 (단어 은 무소속입니다).

참고 1 : Arbitrary 매개 변수의 유형은 Type []입니다. 당신은 문자 배열 [| 1;2;3 |]를 사용하여 원하는,

답변

4

나는 당신이 가까이있어 생각하지만, [1;2;3]list<int>를 만듭니다

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

내 질문을 작성할 때 그래, 난 내 목록 구문에 대한 관심을 보여주는되지 않았습니다. 당신은 정확 합니다만, 실제로는'Type'을 얻는 것에 초점을 맞추고 있습니다. 구문을 복사 할 때 여전히 _ "This is valid constant expression or custom attribute value"오류가 발생합니다. 이 구문을 사용할 수 있습니까? – 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