我有一個在F#中具有顯式泛型參數的基類。我試圖檢查我使用的給定類型是否實現了特定的接口。我想:「如果OB:ISysAware然後」基於信息從類型此運行脅迫或型式試驗「一到ISysAware涉及一個不確定的類型:會做,但抱怨總是相同的:F中泛型類型的運行時強制#
let (|SysAware|_|) t =
match t with
| :? ISysAware as p -> Some(p)
| _ -> None
錯誤FS0008在此節目點之前。某些類型不允許運行時類型測試。需要進一步的類型註釋。
顯然,我不想在這裏使用反射。 IsAssignableFrom會付出高昂的代價。
想法?
有趣的,但我確實有'a:不是結構和'a:null作爲約束。 – hammett 2012-01-26 23:30:48