ビューモデルクラスを備えたF#WPFアプリケーションがあります。XAMLでデータ型として使用するには、これらのクラスをパブリックにする必要があります。
問題は、F#型の再帰(および)を使用すると、従属型にアクセスできないように見えることです。または、アクセスできないように見えます。つまり、この例では次のようになります。
type Foo () =
member this.Bar = new Bar()
and Bar () =
member this.Foo = new Foo()
その場合、XAMLではBarにアクセスできません。
Fooの前にpublicとBarも付けようとしました。同義語も作成しようとしました。これらの変更はどちらも問題を解決しませんでした。
これは本当にそれがどのように機能するのか、それとも私は「間違っている」のでしょうか?それが機能する方法である場合、従属型(例ではBar)を強制的に公開できますか?
ありがとう!:-)
更新1:詳しく調べると(dotPeek)、アクセスは同じであるように見えます。F#コンパイラは、静的外部クラスFooとネストされたクラスFooを作成します。Barでも同じです。それらはすべて公開としてマークされています。XAML内からBarにアクセスできない理由に戸惑います。
アップデート2:解決しました。WPFは、区別された共用体を好みません。1つ以上の従属型は、識別された共用体を使用し、XAMLデータバインディングに使用されないようにします。