(更新:我添加了一个repro示例)
代码如下所示:
type Lib =
static member inline tryMe (a: ^a) =
let name = (^a: (static member name: string) ())
name
type Test =
struct
val Value: string
new v = {Value = v}
end
static member inline name with get() = "HiThere"
static member works(a:Test) = Lib.tryMe a
Run Code Online (Sandbox Code Playgroud)
这将"正常工作"并编译.但是,如果你稍微扩展它,例如如下所示:
/// Does a bounds check and raises an error if bounds check is not met
let inline checkBounds f (g: 'b -> ^c) (tp: ^a) =
let convertFrom = …Run Code Online (Sandbox Code Playgroud)