基于的F#引号的隐式转换
ReflectedDefinition
属性不适用于let绑定函数,而仅适用于静态成员。以下工作符合预期:
type DocumentGetter =
static member GetName ([<ReflectedDefinition>]x:Expr<_->_>) =
match x with
| DerivedPatterns.Lambdas(_, Patterns.Call(_,methodInfo,_)) ->
methodInfo.Name
| _ -> "unknown"
let rec retryAsync (retryAttempts: TimeSpan list)
(request: unit -> Async<Result<'a, ExchangeError>>)
: Async<Result<'a, ExchangeError>> = failwith "!"
DocumentGetter.GetName retryAsync
也就是说,我不太确定你的情况是什么。听起来你正试图做一些非常复杂的事情——我认为可能有一种更容易的方法来解决你的实际问题,而不需要这样做。