📖

Prism for Xamarin.Forms入門 DependencyService vs PlatformInitializer

に公開

以前、以下のエントリーでPrismではDependencyServiceをインジェクションする仕組みがある旨、説明しました。

http://www.nuits.jp/embed/2016/09/11/230549

しかし、実のところプラットフォームごとにインジェクションするクラスを切り替える方法は、PlatformInitializerを利用する方法もあります。

PlatformInitializerについては以下でも触れています。

http://www.nuits.jp/embed/2016/08/11/195415

さて、ではどちらを使うべきなのでしょうか?Prismの製作者であるBrianに聞いてみました。

私「Hey! Brian. PlatformInitializer to DependencyService dotti ga iino?」

Brian「PlatformInitializer!」

だそうです。

なぜかも聞いてみました。

整理すると以下の通りです。

  1. PlatformInitializerの方が早い
  2. DependencyServiceは以下の制約がある
  3. デフォルトコンストラクタしか利用できない
  4. Xamarin.Forms.Initの呼び出し前に利用できない
  5. 上記の制約からDependencyServiceを利用するとPlatformInitilalizerとの併用が必要になる可能性があり、一貫性が失われる
    またその結果、コードの可読性が低下する

ということでした。

DependencyServiceの制約、なんかもう一個あった気がしたんだけど(そこまでBrianには聞いていません。。。)忘れました。ナンダッケ

まぁ、使わなければ一緒ですよ!(思い出したらまた追記します)

というわけで以上!

それではまた〜!

Discussion