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.

questionAnswers(2)

yourAnswerToTheQuestion