13

我正在用 F# 编写 ServiceStack webservice,需要限制一些功能(例如删除 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# 中,您不能使用管道来完成此操作,而我尝试的所有其他操作都是尝试对枚举进行函数应用。在这种情况下,我该如何分配多个枚举?

4

3 回答 3

21

使用三管:

EnableFeatures = Feature.Json ||| Feature.Xml ||| Feature.Html ||| Feature.Metadata ||| Feature.Jsv
于 2012-05-18T15:44:46.627 回答
13

如果你有一堆,你可以节省一些击键reduce

List.reduce (|||) [Feature.Json; Feature.Xml; Feature.Html; Feature.Metadata]
于 2012-05-18T16:04:36.793 回答
1

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

EnabledFeatures = enum<Feature>(16); // or whatever the full flag value would be for Json + Xml + Html + Metadata, etc
于 2012-05-18T15:43:24.443 回答