かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Prism 4.0 Drop9が超素敵な感じになってる

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も、自前実装しなくてもちゃんと実装されたものが入ってます。画面遷移も入ってます。普通にアプリケーションを作るうえで必要そうなものが大体詰まってます。

MVVMに興味のある人も必見

Prismみたいな重たそう(実際そんな重くないです、ソースコードも私で追いかけれます)なフレームワークなんていらないよ!っていう人もダウンロードしてみる価値はあります。
MVVMのリファレンス実装なるものが入っていて、こいつはPrismのライブラリや作法には、ほとんど依存していない素のMVVMの実装例になっています。
いい勉強の題材になります。

ダウンロードはこちらから

ということで、とても素敵なPrismのダウンロードは以下のURLから行えます。
http://compositewpf.codeplex.com/

ぜひ、お試しあれ。