给出这个例子:
type Base() =
static member Function() = ""
type Derived() =
inherit Base()
let get<'T when 'T :> Base> segment =
return ('T).Function()
let invoked = get<Derived>()
Run Code Online (Sandbox Code Playgroud)
有没有办法来调用Function从get?
SRTP可以帮助您:
type Base() =
static member Function() = ""
type Derived() =
inherit Base()
let inline get< ^T
when ^T :> Base
and ^T : (static member Function: unit -> string)> =
(^T : (static member Function: unit -> string) ())
let invoked1 = get<Derived> //ok
let invoked2 = get<string> //error: string not derived from Base
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |