Статически разрешенные параметры типа
Следующий (упрощенный) фрагмент взят из приложения, которое я реализую, которое последовательно использует параметры типа, разрешенные статически.
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.