LoginSignup
3
5

More than 3 years have passed since last update.

Prism コードサンプル学習:01-BootstrapperShell

Posted at

Prism コードサンプル学習:01-BootstrapperShell

Prismとは

以下を参照ください。
https://www.fenet.jp/dotnet/column/tool/1715/

上記の中で、以下が主な特徴と捉えればよさそうです。

  • ViewModel実装の補佐
  • DI コンテナ(依存性の注入)
  • InteractionRequest
  • EventAggregator

はじめに

本記事は、以下のコードを参考に作成した記事になります。
Prismを使ってどう作るのか、だけでなくてライブラリの作りがどのようになっているかも併せて理解したいと思っています。
なお、サンプルはレガシーのコードが残っているようで、一部のクラスはObsolute属性が付与されていますのでお気を付けください。

01-BootstrapperShell

本サンプルではBootstrapperと呼ばれるクラスを用いてアプリケーションを立ち上げるようです。

    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            var bootstrapper = new Bootstrapper();
            bootstrapper.Run();
        }
    }

    class Bootstrapper : UnityBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }

        protected override void InitializeShell()
        {
            Application.Current.MainWindow.Show();
        }
    }

ポイントとしては以下でしょうか。

  • BootstrapperではPrismライブラリアセットを登録している
  • プロパティとしてIUnityContainer型のContainerをメンバとして所持しており、これがDIコンテナとしての役割をはたしている
  • 何が注入されているかはここを見ると分かりやすい(デフォルトのコンフィグレーションを利用した場合)
  • CreateShell()ではそのアプリケーションのシェルかメインウインドウを登録し、Rum()メソッドの中でInitializeShell()が呼び出される

Prismのお約束として、Bootstrapに立ち上げ時に必要なことを書くのが重要そうです。
ひとつひとつのモジュールについては、以降のサンプルで学ぶことになりそうなのでここまでとします。

おわりに

今回は起動時にPrismライブラリアセットを登録しているBootstrapperクラスを読みました。
次回、02-Regionsについて見ていこうと思います。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5