在f#match语句中如何匹配byte []类型?

Cha*_*ert 7 ado.net f#

我正在尝试从.net类型中查找DbType枚举值.我正在使用匹配声明.但是我无法弄清楚如何匹配类型byte [].

let dbType x =
  match x with
  | :? Int64 -> DbType.Int64
  | :? Byte[] -> DbType.Binary // this gives an error
  | _ -> DbType.Object
Run Code Online (Sandbox Code Playgroud)

如果有更好的方法来映射这些类型,我会接受建议.

ild*_*arn 11

byte[],byte arrayarray<byte>都是同义词,但在这种情况下,只有最后一个没有括号:

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
Run Code Online (Sandbox Code Playgroud)