2011-05-12 15 views
7

DbType numaralandırma değerlerini .net türlerinden aramaya çalışıyorum. Bir eşleşme bildirimi kullanıyorum. Ancak, tip bayt [] ile nasıl eşleşeceğini anlayamıyorum.ifadesi bayt tipiyle nasıl eşleştirilirim []?

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

Bu türleri eşlemek için daha iyi bir yol varsa, öneriye açık olurdum.

cevap

10

byte[], byte array ve array<byte> tüm eş anlamlı, ancak bu bağlamda sadece son parantez olmadan çalışacaktır:

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 # statik olarak yazılan dillerin Perl olduğunu. – Daniel