我正在编写一个带有PropertyInfo对象的函数,获取MyAttribute并返回一个MyAttribute对象:
let getparamattribute(p : PropertyInfo) =
let attr = p.GetCustomAttribute (typeof<MyAttribute>, true)
attr :? MyAttribute
但是FSI将返回类型显示为bool:
val getparamattribute : (PropertyInfo -> bool)
为什么?
答案 0 :(得分:6)
这正是:?
运算符的作用:
如果值与指定的类型匹配,则返回
true
;除此以外, 返回false
(类型测试运算符)。
您正在寻找的是:?>
向下投注操作员:
来自Symbol and Operator Reference 的
:?>
运算符执行动态转换,这意味着成功 演员表是在运行时确定的。使用:?>
的演员 在编译时不检查运算符;但在运行时,尝试 使其转换为指定的类型。如果对象兼容 使用目标类型,演员成功。如果对象不是 与目标类型兼容,运行时提出了一个InvalidCastException
。