Composite Application Guidanceとして知られる通称Prismですが、暫く見ない間にPrism 4.0 Drop9というところまでいってました。
こいつの凄いところは、今までDIコンテナとしてはUnityを使ってましたが、MEFが使えるようになっているところが非常に素敵です。いけてます。
StockTrader Reference Implementationというサンプルアプリケーションも今までUnityだったものがMEFに書き換えられてます。ViewをRegionに差し込む処理が超クールです。気になる人はソースを追いかけてみると原理がわかると思います。
AutoPopulateExportedViewsBehaviorというクラスをStockTraderRIBootstrapperクラスでIRegionBehaviorFactoryに差し込んで、RegionBehaviorFactoryはIServiceLoaderのGetInstanceメソッドからインスタンスを生成している。MEFベースのプロジェクトはIServiceLoaderの実態はMefServiceLocatorAdapterクラスで、こいつはMEFのCompositionContainerからインスタンスを取得している。
そして、AutoPopulateExportedViewsBehaviorにViewが注入されて必要に応じてRegionにViewが差し込まれる。
おおざっぱに言うと、こんな感じのメカニズムになってます。そのおかげで、Viewに属性をつけるだけでRegionにViewを差し込むというメカニズムが作りこまれています。
前までのPrismのバージョンではModuleのInitializeメソッドでRegionにViewを差し込んでたけど、そういうコードがない(というかModuleクラスが単なるクラスでIModuleを実装してない)ので、気になってコードを追いかけたら、上のような感じになっていました。
いやぁ、素晴らしい。
DelegateCommandも、自前実装しなくてもちゃんと実装されたものが入ってます。画面遷移も入ってます。普通にアプリケーションを作るうえで必要そうなものが大体詰まってます。