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