为什么我的F#函数的返回类型为bool?

时间:2014-06-29 18:29:27

标签: reflection f#

我正在编写一个带有PropertyInfo对象的函数,获取MyAttribute并返回一个MyAttribute对象:

let getparamattribute(p : PropertyInfo) = 
    let attr = p.GetCustomAttribute (typeof<MyAttribute>, true) 
    attr :? MyAttribute 

但是FSI将返回类型显示为bool:

val getparamattribute : (PropertyInfo -> bool)

为什么?

1 个答案:

答案 0 :(得分:6)

这正是:?运算符的作用:

  

如果值与指定的类型匹配,则返回true;除此以外,   返回false(类型测试运算符)。

您正在寻找的是:?>向下投注操作员:

  

:?>运算符执行动态转换,这意味着成功   演员表是在运行时确定的。使用:?>的演员   在编译时不检查运算符;但在运行时,尝试   使其转换为指定的类型。如果对象兼容   使用目标类型,演员成功。如果对象不是   与目标类型兼容,运行时提出了一个   InvalidCastException

来自Symbol and Operator Reference