クリックすると、WPFフォームを表示するWinformsメニュー項目があります。 WPFフォームは、AutofacでブートストラップされたCaliburn Microを使用します。Caliburn Microで使用するAutofacコンテナの処理方法
最近、キャリバーブートストラップがルートAutofacコンテナからの依存関係を解決したことが私にはたった今起こりました。したがって、これらの依存関係(例えば、グリッドに結合されるデータ項目の1000を有するビューモデル)は決して処理されない。
私は、Autofacライフタイムスコープのコンテナを使用して処分を管理したいと思いますが、私はCaliburnでこれを行う方法がわかりません。最初は、開かれた各WPFフォームに対して1つのCaliburnブートストラップ(インスタンスには独自のAutofacライフタイムスコープコンテナを使用)をインスタンス化すると考えました。次に、フォームが配置されるとき、ブートストラップを配置することができ(およびライフタイム・コープ・コンテナにそれを配置することができる)。
しかし、Caliburnソースを見ると、アプリケーション全体に対して1つのブートストラップしか作成されていないようです。これは、ブートストラップをインスタンス化すると、静的フィールドにUIマーシャリング(および私が見たことのないその他のもの)を割り当てるように思えるからです。
WPFフォームが閉じられたときに、依存関係をどのように処分することができるかに関する推奨事項や提案はありますか?
私は城に関連して同様の質問をしました。 http://stackoverflow.com/q/9583760/246811。まだ実用的な答えはありませんでした。 –
質問をする前にあなたの投稿を見ました。あなたと同じように、私はVMを汚染することなくこれを行う方法を探しています。さらに、なぜこのオンラインに関する情報がまだないのか分かりません。キャリバーン(少なくとも2つの人気のあるDIフレームワークであるAutofacとCastleでは、かなり大きな問題のようです)。 –
同意します。ライフサイクルの問題を伴うVMの汚染は、私が暮らすことができるものではありませんでした。 –