Статически разрешенные параметры типа
Следующий (упрощенный) фрагмент взят из приложения I 'Реализация, которая последовательно использует параметры типа, разрешенные статически.
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 выдает мне следующую ошибку при определении типа поля AField (AField : A< BTy >
) который:Тип 'BTY» не поддерживает операторы с именем 'MyMember.
Редакция. Объявление их отдельно работает, но если у меня есть взаимная ссылка, и яне могу объявите третий тип для размещения сверху, который содержит общую информацию двух типов. Что я должен сделать, чтобы избежать этой проблемы? Во всяком случае, если я определю ниже определенияlet pluto = ("" :> obj) :?> A< BTy >
это работает, я думаю, потому что оба типа видимы из привязки let.