2016-12-06 1 views
2

FsCheck ermöglicht eine individuelle Arbitrary in seiner NUnit Integration:Wie übergibt man einen Typ als Attributparameter mit F # -Syntax?

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

Diese Syntax funktioniert nicht. Es ist mir peinlich, das zu fragen, aber anscheinend habe ich das nie zuvor gebraucht: Wie spezifiziert man den Typ in F # als Attributparameter? Microsoft says nothing about it, noch die Wikibooks project und ich habe einige Probleme googeln dies (das Wort Typ ist omnipräsent).

Hinweis 1: Der Parameter Arbitrary ist vom Typ Type [].

Antwort

4

Ich glaube, Sie in der Nähe sind, aber [1;2;3] schafft eine list<int>, Sie möchten ein Array [| 1;2;3 |] wörtlichen mit:

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

Ja, ich war nicht auf meiner Liste-Syntax zeigt Aufmerksamkeit, wenn meine Frage zu schreiben. Sie haben natürlich Recht, aber ich habe mich eigentlich darauf konzentriert, den "Typ" zu bekommen, und das Kopieren Ihrer Syntax wird immer noch mit einem _ "Dies ist kein gültiger konstanter Ausdruck oder benutzerdefinierter Attributwert" _ Fehler. Kannst du repro oder funktioniert diese Syntax für dich? – Abel

+1

Funktioniert hier: https://github.com/fscheck/FsCheck/blob/master/tests/FsCheck.Test/Runner.fs#L21 –

+0

Mein schlechtes. Der erste Fehler wurde durch den Tooltip-Fehler in F # verdeckt und war _ "Der Typ" MyArb "ist nicht definiert" _ Ich hatte 'Tests.Arithmetic.MyArb', der existiert, aber anscheinend bei der Verwendung von' typeof', die Sie nicht verwenden können der FQN ??? Wie auch immer, wenn ich es auf "typeof " vereinfachte, funktionierte es "einfach". Von meiner eigenen Dummheit getäuscht;). – Abel

Verwandte Themen