13

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# では、パイプを使用してこれを達成することはできません。私が試みる他のすべてのことは、列挙型への関数適用を試みることです。この場合、複数の列挙型を割り当てるにはどうすればよいですか?

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 に答える