Этот пример (встречный пример) приведен в разделе «Удаление циклических зависимостей» в FSharp для развлечения и получения прибыли.https://fsharpforfunandprofit.com/posts/removing-cyclic-dependencies/.
type Customer(name, observer:CustomerObserver) = let mutable name = name member this.Name with get() = name and set(value) = name <- value observer.OnNameChanged(this) and CustomerObserver() = member this.OnNameChanged(c:Customer) = printfn "Customer name changed to '%s' " c.Name
См. Параметр observer в классе Customer.Он не объявлен как поле или свойство в типе.Что тогда?
observer
Customer
В F # аргументы из конструктора находятся в области видимости всего объявления класса.Это отличается от C # и VB.
Это упоминается в документации здесь .
Аргументы первичного конструктора находятся в области видимости всего объявления класса.