F # restricciones de miembros + ^ a byref parámetros

Después de jugar un poco, la función de restricciones de miembros de F # y la función de escritura son las siguientes:

let inline parse< ^a when ^a : (static member Parse: string -> ^a) > s =
    (^a: (static member Parse: string -> ^a) s)

Eso funciona perfectamente bien:

let xs = [ "123"; "456"; "999" ] |> List.map parse<int>

Estoy tratando de escribir otras funcionestryParse, que usa un método estáticoTryParse y envuelve el resultado del análisis en'a option escriba para un mejor soporte en F #. Algo como esto no compila:

let inline tryParse s =
    let mutable x = Unchecked.defaultof< ^a>
    if (^a: (static member TryParse: string * ^a byref -> bool) (s, &x))
        then Some x else None

El error es:

error FS0001: se esperaba que esta expresión tuviera tipobyref <'a> pero aquí tiene tipo'una referencia

F#ref-células no funciona también:

let inline tryParse s =
    let x = ref Unchecked.defaultof< ^a>
    if (^a: (static member TryParse: string * ^a byref -> bool) (s, x))
        then Some x else None

¿Qué estoy haciendo mal?

Respuestas a la pregunta(3)

Su respuesta a la pregunta