読者です 読者をやめる 読者になる 読者になる

しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

MVPVM の Prism をユニバーサルアプリに対応させる(1)

C# MVPVM Prism Windows ランタイムアプリ ユニバーサル Windows アプリ

Prism の MVPVM 拡張ができたので今度はさらにユニバーサルアプリに対応させてみます

f:id:matatabi_ux:20140413173748p:plain

作成したソリューション構成はこんな感じです

それぞれのプロジェクトの概要を図にすると下記のようになります

f:id:matatabi_ux:20140413173801p:plain

  • .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 アプリで共用するために一部変更が必要ですが、それはまた次回の記事で書きます