Ich versuche, verschiedene Erweiterungsmethoden für einen generischen Typ zu erstellen, der an bestimmte generische Typparameter in F # gebunden ist, aber die Sprache scheint es mir nicht zu erlauben:
Was ich machen möchte, ist etwas wie das Folgende:
%Vor% Aber es gibt mir den Compiler Fehler (Unterstreichung der int
Schlüsselwort):
Unerwarteter Bezeichner im Typnamen. Erwarteter Infix-Operator, Anführungszeichen oder anderes Token.
Das folgende funktioniert , obwohl es den generischen Typparameter nicht wie gewünscht an int
bindet:
Gibt es eine Möglichkeit, dieses Ziel in F # zu erreichen - verwende ich vielleicht nur die falsche Syntax? Wenn nicht, würde ich mich freuen, wenn jemand einen Workaround vorschlagen könnte, vielleicht irgendwo mit type constraint.
Generische Erweiterungsmethoden sind jetzt in F # 3.1 verfügbar:
%Vor% Um anderen zu helfen, die nach ähnlichen Lösungen suchen, finden Sie hier ein Beispiel, wie generische Erweiterungsmethoden mit Typbeschränkungen verwendet werden. Im folgenden Beispiel gibt es eine Typbeschränkung, die erfordert, dass das übergebene type-Argument einen Standardkonstruktor verfügbar macht. Dies geschieht mithilfe des Attributs [<CLIMutable>]
, das auf den Datensatz Order
angewendet wird. Außerdem beschränke ich das Ergebnis der Methode auf den übergebenen Typ.
Um die Erweiterungsmethode zu verwenden, müssen Sie den Typ angeben, den Sie verwenden möchten. Beachten Sie, dass ich auch eine generische Wörterbuchschnittstelle erweitere.
%Vor%Tags und Links f# generics extension-methods type-constraints generic-type-argument