私は MVVMCross を試してみて、今後のより大きなプロジェクトで役立つかどうかを確認しています。それは素晴らしいことです。ナビゲーション、viewModel の場所、および一般的なクロスプラットフォーム アプローチが気に入っています。これはまさに私が必要としているものです。ただし、プラットフォームに応じて依存性注入の一部を分割することに少し行き詰まっています。
これで、起動時にサービス参照を初期化する、共有ポータブル ライブラリを使用した基本的なアプリケーションができました。
public TwitterSearchApp()
{
InitaliseServices();
}
private void InitaliseServices()
{
this.RegisterServiceInstance<ITwitterSearchProvider>(new TwitterSearchProvider());
}
罰金。これにより、すべてのプラットフォームで使用されるサービスの実装が定義されます。しかし、さまざまなプラットフォームでさまざまな実装が必要になる状況についてはどうでしょうか。たとえば、コア要件は同じですが、スマートフォンとタブレットでは異なる方法で処理する必要があるストレージ/キャッシュなどです。
セットアップのどこかに入るかもしれないと思いました:
public class Setup : MvxBaseWinRTSetup
{
public Setup(Frame rootFrame): base(rootFrame)
{
}
protected override MvxApplication CreateApp()
{
var app = new TwitterSearchApp();//set platorm specific IoC here maybe?
return app;
}
protected override void AddPluginsLoaders(Cirrious.MvvmCross.Platform.MvxLoaderPluginRegistry loaders)
{ // or perhaps here?
loaders.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.Visibility.WinRT.Plugin>();
base.AddPluginsLoaders(loaders);
}
}
確信はないけど。ViewModel ロケーターの置き換えに関する参照を見てきましたが、他の IoC サービスを置き換える同様の方法はありますか?
ありがとう、フレームワーク全体で素晴らしい仕事をしました。私はそれがどのように機能するかが本当に好きです(このビットは別として、私はまだ正しく理解していません)
トビー