2011-05-12 92 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