que necesito para poner en práctica un método de extensión estática apoyo limitaciones miembros sobre algunos tipos primitivos básicos como números enteros, flotadores, etc. Aquí está mi código de enteros con signo:Los métodos estáticos de extensión de apoyo limitaciones miembros
module MyOperators =
let inline foo (x : ^T) = (^T : (static member Foo : ^T -> int) (x))
type System.Int32 with
static member Foo(x : Int32) = 7 // static extension
Código de ensayo:
open MyOperators
let x = foo 5 // x should be 7
Pero compilador se queja con el error:
The type 'System.Int32' does not support any operators named 'Foo'
W ¿Me estoy perdiendo aquí? ¡Gracias!
Si te entiendo correctamente, creo que incluso si puedes hacer esto, no es una idea especialmente buena. El retoque con los mecanismos básicos del lenguaje siempre me ha parecido un antipatrón. Piense en el hecho de que alguien además de usted puede tener que trabajar en este código en algún momento en el futuro. Incluso puede que tenga que mantener este código usted mismo en algún momento en el futuro cuando no haya trabajado en él por un tiempo. Las modificaciones a los tipos intrínsecos pueden conducir a varios "WTF?" momentos. –