2012-05-18 16 views
10

Estoy escribiendo un servicio web ServiceStack en F # y necesito limitar algunas de las funciones (por ejemplo, eliminar el soporte SOAP).¿Cuál es la sintaxis para asignar múltiples valores enum a una propiedad en F #?

En C# Estoy utilizando la operación de la tubería para asignar múltiples enumeraciones (ServiceStack.ServiceHost.Feature) a la propiedad EnableFeatures así:

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

Sin embargo en Fa # No se puede utilizar tubería de lograr esto, y todo lo demás que intento es intentar hacer una aplicación de función en las enumeraciones. ¿Cómo hago para asignar múltiples enumeraciones en este caso?

+3

Ya tiene una respuesta, pero vale la pena señalar que esto no es un operador de tuberías, es 'bi twise o '. El operador de bit a bit de F #, como lo señaló Craig Stuntz, es '|||'. –

+2

Creo que es '||||||| '... oh espera, no, solo' ||| '. – Daniel

+1

@botanist Me alegro de verte aquí - hay gente F # muy inteligente por aquí. Y ahí estoy yo también. –

Respuesta

18

Use un tubo de triple:

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

¡Gracias señor! Pensé que me estaba perdiendo algo simple, y de hecho lo estaba. [F # operadores bit a bit] (http://msdn.microsoft.com/en-us/library/dd469495.aspx) –

1

debe crear el valor basado en la construcción de los valores subyacentes:

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

Podría, pero es por eso que tenemos nombres simbólicos para banderas y operadores de combinación bit a bit en primer lugar, por lo que no es necesario. –

12

Si usted tiene un montón de ellos se puede ahorrar unos cuantos golpes de teclado con reduce:

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