in f# match statement how do I match to the type byte[]?

ado.net, f#

Solution

`byte[]`, `byte array`, and `array<byte>` are all synonymous, but in this context only the last will work without parentheses:

let dbType (x:obj) =
    match x with
    | :? (byte[])     -> DbType.Binary
    | :? (byte array) -> DbType.Binary // equivalent to above
    | :? array<byte>  -> DbType.Binary // equivalent to above
    | :? int64        -> DbType.Int64
    | _               -> DbType.Object

Problem

I'm trying to lookup DbType enumeration values from .net types. I'm using a match statement. However I cannot figure out how to match on the type byte[]. ``` let dbType x = match x with | :? Int64 -> DbType.Int64 | :? Byte[] -> DbType.Binary // this gives an error | _ -> DbType.Object ``` If there is a better way to map these types, I would be open to suggestions.

Original source