nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

Prism for Xamarin.Forms入門 DependencyServiceとPlatformInitializerどちらを使うべきか?Brianに聞いてみた

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

www.nuits.jp

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

www.nuits.jp

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

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

だそうです。
なぜかも聞いてみました。
整理すると以下の通りです。

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

ということでした。
DependencyServiceの制約、なんかもう一個あった気がしたんだけど(そこまでBrianには聞いていません。。。)忘れました。ナンダッケ
まぁ、使わなければ一緒ですよ!(思い出したらまた追記します)

というわけで以上!
それではまた〜!