2011-05-12 66 views
7

我想从.net类型查找DbType枚举值。我正在使用匹配语句。但我不知道如何匹配类型byte []。如何匹配byte []类型?

let dbType x = 
    match x with 
    | :? Int64 -> DbType.Int64 
    | :? Byte[] -> DbType.Binary // this gives an error 
    | _ -> DbType.Object 

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

回答

10

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 
+1

TMTOWTDI - F#是静态类型语言的Perl的。 – Daniel 2011-05-12 22:14:09