かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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/

ぜひ、お試しあれ。