Tengo una clase base con argumentos genéricos explícitos en F #. Estoy tratando de verificar si el tipo dado que estoy usando implementa una interfaz específica. Pensé "Si el OB:? ISysAware luego" haría, pero la queja es siempre el mismo:Coerción en tiempo de ejecución de tipos genéricos en F #
let (|SysAware|_|) t =
match t with
| :? ISysAware as p -> Some(p)
| _ -> None
FS0008 de error: Esta coerción tiempo de ejecución o ensayo de tipo de tipo 'A a ISysAware implica un tipo indeterminado sobre la base de la información antes de este punto del programa. Las pruebas de tipo de tiempo de ejecución no están permitidas en algunos tipos. Se necesitan anotaciones de tipo adicionales.
Preferiría no utilizar la reflexión aquí, obviamente. IsAssignableFrom haría el truco, a un alto costo.
¿Pensamientos?
interesante, pero tengo 'a: no struct' y 'a: null como restricciones. – hammett