Prism の MVPVM 拡張ができたので今度はさらにユニバーサルアプリに対応させてみます
作成したソリューション構成はこんな感じです
それぞれのプロジェクトの概要を図にすると下記のようになります
- .SharedPortable:アプリ間で共用する ViewModel、Model を含む PCL プロジェクト
- .Windows:View、Presenter など Windows アプリ固有のコードを含むプロジェクト
- .WindowsPhone:View、Presenter など Windows Phone 8.1 アプリ固有のコードを含むプロジェクト
- .Shared:ユニバーサルアプリ間で共有するコードを含む Shared プロジェクト
Shared プロジェクトは Visual Studio 2013 Update 2 RC で追加された機能で、アセンブリの参照ではなくコードを共有する構造になるようです
したがって Windows アプリと Windows Phone 8.1 アプリで同じコードとなるソースを Shared プロジェクトに配置し、異なるコードとなるソースを各自のプロジェクトに配置することになります
ただ、Shared プロジェクトのコードであっても #if ディレクティブで分岐させることが可能です
Windows アプリの場合は下記のように記述します
#if WINDOWS_APP // Windows アプリだけ有効になるコード #endif
Windows Phone 8.1 アプリの場合はこうです
#if WINDOWS_PHONE_APP // Windows Phone 8.1 アプリだけ有効になるコード #endif
あまり分岐が多くなるようならば別々のプロジェクトに配置した方がよいですが、数行の違いであれば Shared プロジェクトに配置して上記のディレクティブで分岐させると簡単ですね
前回作成した MVPVM の Prism 拡張コードの一部も Windows Phone 8.1 アプリで共用するために一部変更が必要ですが、それはまた次回の記事で書きます