最近、Windows Phoneの開発の実験を開始しました。
MVVMテンプレートとIoCコンテナーを使用してWPFとSilverlightを開発した経験がすでにあるため、このタスクはそれほど難しくありません。
結局のところ 、私のお気に入りの
Caliburn.Micro MVVMフレームワーク(CM)と私のお気に入りの
Autofac IoCコンテナーがこのプラットフォームをサポートしています。 私は袖をまくり、アプリケーションの骨格を作り始めました。 CMは、作業にIoCコンテナーを積極的に使用します。 組み込みのコンテナ(SimpleContainer)、またはCM用のアダプタがある他の多くのコンテナを使用できます。 Autofac用のこのようなアダプターがあります-Caliburn.Micro.Autofacで、これは既にWPFアプリケーションで使用しました。 これは素晴らしいことですが、通常どおり、タールバレルは軟膏のハエによって台無しにされました-CM 1.3.1(現在のバージョン)のAutofacアダプターはWindows Phoneでは機能しません。 最近まで、コンパイルさえしていませんでしたが、その作者である
David Buksbaumは約3週間前にこの欠陥を修正しました。 ただし、何らかの方法で、それを使用するアプリケーションは機能しません。 どうやらDavidは自分でWindows Phone用のアプリケーションを開発しておらず、このバージョンは未完成のままです。 お気に入りのバンドルを拒否したくなかったので、このアダプターを自分で作成する必要がありました。 今日、私はこの実装についてあなたの注意を喚起します。
次の問題を解決する必要がありました。
- IPhoneServiceとINavigationServiceを実装するコンポーネントは、コンテナに登録する前にAutofacBootstrapperでインスタンス化する必要があります。
- IPhoneContainerの実装はなかったため、大きな問題が発生しました。
AutofacBootstrapperとAutofacPhoneContainerの最終バージョンは以下のとおりです。しばらく前に作成者に送信しましたが、何らかの理由でプロジェクトにそれらを統合しませんでした。
テストプロジェクトはこちらからダウンロードできます 。
ちなみに、CMの現在のバージョンで不快なバグを発見したことは注目に値します。すべてのシナリオで隔離ストレージに保存されるフィールドの値が保存されるわけではありません。 私のテストプロジェクトでのCMの構築は、すでにこの欠点を免れています。 CM Webサイトでこの問題を説明する
バグレポートを作成しました。 それがすぐに修正されることを期待しましょう。
PS私はこれが私のブログからの投稿であることをすぐに言います、そして、私は再版しない規則について知っています。 しかし、実際には私のブログは宣伝されておらず、私が共有する情報は多くの人にとって有用である可能性があります。 言い訳として、私のブログへのリンクを提供しないことがカウントされることを願っています。