以前、以下のエントリーでPrismではDependencyServiceをインジェクションする仕組みがある旨、説明しました。
しかし、実のところプラットフォームごとにインジェクションするクラスを切り替える方法は、PlatformInitializerを利用する方法もあります。
PlatformInitializerについては以下でも触れています。
さて、ではどちらを使うべきなのでしょうか?Prismの製作者であるBrianに聞いてみました。
私「Hey! Brian. PlatformInitializer to DependencyService dotti ga iino?」
Brian「PlatformInitializer!」
だそうです。
なぜかも聞いてみました。
整理すると以下の通りです。
- PlatformInitializerの方が早い
- DependencyServiceは以下の制約がある
- デフォルトコンストラクタしか利用できない
- Xamarin.Forms.Initの呼び出し前に利用できない
- 上記の制約からDependencyServiceを利用するとPlatformInitilalizerとの併用が必要になる可能性があり、一貫性が失われる
またその結果、コードの可読性が低下する
ということでした。
DependencyServiceの制約、なんかもう一個あった気がしたんだけど(そこまでBrianには聞いていません。。。)忘れました。ナンダッケ
まぁ、使わなければ一緒ですよ!(思い出したらまた追記します)
というわけで以上!
それではまた〜!