Parametry typu rozwiązanego statycznie
Poniższy (uproszczony) fragment pochodzi z implementowanej przeze mnie aplikacji, która konsekwentnie używa parametrów typu rozwiązanych statycznie.
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 daje mi następujący błąd, gdy definiuję typ pola AField (AField : A< BTy >
) który jest:Typ „BTy” nie obsługuje żadnych operatorów o nazwie „MyMember”.
EDYCJA. Deklarowanie ich osobno działa, ale jeśli mam wzajemne odniesienie i janie może zadeklaruj trzeci typ do umieszczenia na górze, który zawiera wspólne informacje o dwóch typach. Co powinienem zrobić, aby uniknąć tego problemu? W każdym razie, jeśli zdefiniuję poniżej definicjelet pluto = ("" :> obj) :?> A< BTy >
to działa, wyobrażam sobie, ponieważ oba typy są widoczne z wiązania let.