在F#中为属性分配多个枚举值的语法是什么?

时间:2012-05-18 15:40:44

标签: f# enums servicestack

我在F#中编写ServiceStack Web服务,需要限制一些功能(例如删除SOAP支持)。

在C#中,我使用管道操作将多个枚举(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#中你无法使用管道来实现这一点,我尝试的其他一切都是尝试对枚举进行功能应用。在这种情况下,如何分配多个枚举?

3 个答案:

答案 0 :(得分:18)

使用三重管道:

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

答案 1 :(得分:12)

如果你有很多,可以使用reduce保存一些按键:

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

答案 2 :(得分:1)

您可以根据基础值的构造创建值:

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