为什么这个静态类型的成员访问认为它是一个getter?

Why does this statically typed member access think it is a getter?

rvm 是对象,不是函数。

为什么约束 (^b:(member ReportSubTitle:(String -> unit)) rvm ) 出现为 getter 而不是 setter?这是工具提示问题还是其他问题?

在我使用静态类型泛型的其他任何地方,我发现我什至不必告诉它类型。这也不起作用:

// Setup the sub title with the total
let subTitleSetter = (^b:(member ReportSubTitle:_) rvm ) 
subTitleSetter ("Total: " + total.ToString("C") )

将此尝试移到函数中并尝试@kvb 建议的方法

这是 scope/method

rvm 的唯一用途

我不完全确定通过静态成员约束调用 setter 的正确方法是什么。我总是发现该功能的边缘有点粗糙,并且更喜欢在可能的情况下使用其他选项(即定义接口并通过接口访问成员)。

也就是说,看起来您可以在约束中使用 set_PropertyName。以下小示例对我来说效果很好:

type A() = 
  member val Foo = 0 with get, set

let a = A()
let setter v = (^b:(member set_Foo : int -> unit) (a, v) )

setter 42
a.Foo