Parâmetros de tipo resolvidos estaticamente
O snippet a seguir (simplificado) é extraído de um aplicativo que estou implementando, que usa consistentemente Parâmetros de tipo resolvidos estaticamente.
type A< ^B when ^B : (static member MyMember : Unit -> Unit)> = {
Field : unit
}
type TestA = {
AField : A< BTy >
}
and BTy = {
BField : Unit
} with
static member MyMember () = ()
IntelliSense me dá o seguinte erro quando eu definir o tipo de campo AField (AField : A< BTy >
) qual é:O tipo 'BTy' não suporta nenhum operador chamado 'MyMember'.
EDITADO. Declará-los separadamente funciona, mas se eu tiver uma referência mútua e eunão podes declarar um terceiro tipo para colocar no topo que contém as informações comuns dos dois tipos. O que devo fazer para evitar esse problema? De qualquer forma, se eu definir abaixo as definiçõeslet pluto = ("" :> obj) :?> A< BTy >
funciona, imagino porque ambos os tipos são visíveis a partir da ligação let.