Quelle est la syntaxe pour attribuer plusieurs valeurs enum à une propriété F#?
-
11-12-2019 - |
Question
Je suis en train d'écrire un ServiceStack webservice en F#, et de la nécessité de limiter certaines fonctionnalités (enlever le SAVON de soutenir, par exemple).
En C#, je suis en utilisant le tuyau de fonctionnement à affecter plusieurs Énumérations (ServiceStack.ServiceHost.Caractéristique) à la EnableFeatures propriété de la sorte:
SetConfig(new EndpointHostConfig
{
DebugMode = true, //Show StackTraces in responses in development
EnableFeatures = Feature.Json | Feature.Xml | Feature.Html | Feature.Metadata | Feature.Jsv
});
Cependant en F#, vous ne pouvez pas utiliser le tuyau pour ce faire, et tout le reste j'essaie de essaie de faire application de fonction pour les énumérations.Comment puis-je faire au sujet de l'attribution de plusieurs énumérations dans ce cas?
La solution
Utilisez un triple tuyau:
EnableFeatures = Feature.Json ||| Feature.Xml ||| Feature.Html ||| Feature.Metadata ||| Feature.Jsv
Autres conseils
Si vous avez un tas d'entre eux, vous pouvez économiser quelques touches à l' reduce
:
List.reduce (|||) [Feature.Json; Feature.Xml; Feature.Html; Feature.Metadata]
Vous créeriez la valeur basée sur la construction des valeurs sous-jacentes:
EnabledFeatures = enum<Feature>(16); // or whatever the full flag value would be for Json + Xml + Html + Metadata, etc