说,我有这样的事情。它没有编译,但你可以看到我试图做的事情。我试图以各种方式谷歌,但没有骰子。可以这样做吗?
let inline read (s:string) : ^x =
let parsed = (^x : (static member ofString: string -> ^x option) (s))
// this is the bit I'm not sure how do to. This doesn't compile.
// I'm trying to determine what the statically chosen type for ^x is.
let t = typeof<^x>
match parsed with
| Some y -> y
| None -> failwithf "can't parse %s into %s" s (t.Name)
答案 0 :(得分:9)
这很好用,您可以对静态解析的参数使用typeof
- 问题是解析器无法处理<^
,因为它也可以解析为运算符。
只需在^x
周围添加空格即可轻松解决此问题:
let t = typeof< ^x >