根據帖子http://cs.hubfs.net/forums/thread/3616.aspx, 我需要使用類似下面的函數來將一個對象轉換爲一個接口,我已經運行了一個測試,這仍然是真的,錯誤:?>仍然是不固定。動態轉換爲接口
let cast<'a> o = (box o) :?> 'a
let ci = { new Customer(18, Name = "fred") with
override x.ToString() = x.Name
interface ITalk with
member x.Talk() =
printfn "talk1111111" }
let italk = cast<ITalk> ci
if not (italk = null) then
italk.Talk()
是否有更優雅的方式來編寫上述代碼。我正在考慮創建另一個運算符來替換:?>,但我無法獲取傳入的泛型類型參數,如:?>
我創建了一個操作符 「!>」,如下所示 令O =(框○):>「一個 讓ITX:的iTalk => CI itx.Talk() 但缺點是,作爲將被輸入作爲標識符的註釋,類型沒有!編譯時檢查。無法編譯的 –