根据帖子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() 但缺点是,作为将被输入作为标识符的注释,类型没有!编译时检查。无法编译的 –