, Message<_> , , , , generic type Message. , , obj. , generic - generic (, , Message) :
let handleMessage<'a> (message: obj) =
match message with
| :? Message<'a> -> printfn "Message"
| _ -> printfn "Not message"
handleMessage <| Message 1
handleMessage<int> <| Message 1
, , , :
let handleMessage message =
let typ = message.GetType()
match typ with
| _ when typ.GetGenericTypeDefinition() = typedefof<Message<_>> -> printfn "Message"
| _ -> printfn "Not message"
handleMessage <| Message 1
handleMessage <| Message (1 :> obj)
.