Каков синтаксис для назначения нескольких значений enum для свойства в F #?

Я пишу веб-сервис ServiceStack в F # и должен ограничивать некоторые функции (например, удалять поддержку SOAP).

В С# я использую операцию pipe для присвоения нескольким Enums (ServiceStack.ServiceHost.Feature) свойства EnableFeatures, например:

SetConfig(new EndpointHostConfig
{
    DebugMode = true, //Show StackTraces in responses in development
    EnableFeatures = Feature.Json | Feature.Xml | Feature.Html | Feature.Metadata | Feature.Jsv
});

Однако в F # вы не можете использовать pipe для выполнения этого, и все остальное, что я пытаюсь сделать, - это приложение функции к перечислениям. Как мне назначить несколько перечислений в этом случае?

Ответ 1

Используйте тройной канал:

EnableFeatures = Feature.Json ||| Feature.Xml ||| Feature.Html ||| Feature.Metadata ||| Feature.Jsv

Ответ 2

Если у вас есть куча, вы можете сэкономить несколько нажатий клавиш с помощью reduce:

List.reduce (|||) [Feature.Json; Feature.Xml; Feature.Html; Feature.Metadata]

Ответ 3

Вы создадите значение, основанное на построении базовых значений:

EnabledFeatures = enum<Feature>(16); // or whatever the full flag value would be for Json + Xml + Html + Metadata, etc