Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCrossは、プラットフォーム固有のコードをどのようにサポートしています


MVVMCrossは、プラットフォーム固有のコードをどのようにサポートしています


MVVMCrossは、いくつかのメカニズムを介してプラットフォーム固有のコードをサポートしているため、開発者はネイティブプラットフォーム機能を活用しながら、クロスプラットフォームアプリケーションを作成できます。 MVVMCrossがプラットフォーム固有のコードを促進する方法の詳細な概要を次に示します。

1。懸念の分離**

MVVMCrossアプリケーションは、通常、コアプロジェクトとプラットフォーム固有のUIプロジェクトの2つの主要な部分に構成されています。多くの場合、ポータブルクラスライブラリ(PCL)または.NET標準ライブラリとして実装されるコアプロジェクトには、プラットフォーム固有のサービス用のビジネスロジック、モデル、ビューモデル、およびインターフェイスが含まれています。この分離により、プラットフォーム全体でコードを最大限に再利用でき、UIプロジェクトでプラットフォーム固有のコードを隔離します[2] [7]。

2。制御の反転(IOC)と依存関係注射**

MVVMCrossは、IOCコンテナを使用して依存関係を管理します。これにより、開発者はプラットフォーム固有のプロジェクトでプラットフォーム固有のサービスを登録し、それらをコアプロジェクトのビューモデルに注入することができます。たとえば、アプリケーションがカメラにアクセスする必要がある場合、コアプロジェクトはカメラアクセスのインターフェイスを定義でき、各プラットフォーム固有のプロジェクトはこのインターフェイスの独自の実装を提供できます。 IOCコンテナは、実行時にこれらの依存関係を解決し、正しいプラットフォーム固有のサービスが使用されるようにします[2] [8] [11]。

3。プラットフォーム固有のサービス**

プラットフォーム固有のサービスは、ネイティブUIプロジェクトに実装されています。これらのサービスは、各プラットフォームプロジェクトのセットアップクラスに登録されています。セットアップクラスは、MVVMCrossのブートストラップとIOCコンテナにプラットフォーム固有のサービスを登録する責任があります。これにより、コアプロジェクトのビューモデルは、プラットフォーム固有のAPI [2] [7]を直接参照することなく、プラットフォーム固有の機能を使用できます。

4。プラグインフレームワーク**

MVVMCrossには、開発者がプラットフォーム固有の機能をアプリケーションに簡単に統合できるようにするプラグインフレームワークが含まれています。プラグインは、GPSの場所、ローカリゼーション、センサーなどの機能を提供できます。これらのプラグインはIOCコンテナに登録されているため、依存関係注入を通じてビューモデルがプラットフォーム固有の機能にアクセスできるようになります。このフレームワークは、テスト目的のための模擬実装もサポートしています[4] [11]。

5。カスタマイズ可能なバインディングエンジン**

MVVMCrossは、開発者がプラットフォーム固有のビュー用にカスタムバインディングを作成できるようにするカスタマイズ可能なバインディングエンジンを提供します。この機能は、標準のデータ結合メカニズムをサポートしないネイティブコントロールを使用する場合に特に役立ちます。カスタムバインディングを定義することにより、開発者はビューモデルがプラットフォーム固有のビューに適切に接続されていることを確認できます[4]。

###6。プラットフォームプレゼンター**
MVVMCrossは、プラットフォーム固有のプレゼンター(例えば、「IMVXIOSVIEWPRESENTER」、「IMVXANDROIDVIEWPRESENTER」を使用して、各プラットフォームでのビューの表示方法を管理します。これらのプレゼンターは、プレゼンテーションロジックのカスタマイズを可能にし、開発者がUIの動作を特定のプラットフォームの要件に適応させることができます[3]。

要約すると、MVVMCrossは、ビジネスロジックをプラットフォーム固有の実装から分離するための構造化されたアプローチを提供し、サービス管理のためのIOCと依存関係を活用し、ネイティブ機能を統合するためのカスタマイズ可能なバインディングとプラグインフレームワークを提供するための構造化されたアプローチを提供することにより、プラットフォーム固有のコードをサポートします。これにより、開発者はプラットフォーム固有のユーザーエクスペリエンスを提供しながら、コードの再利用を最大化できます。

引用:
[1] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[2] https://dev.to/christian1006/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework-2920
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://github.com/mvvmcross/mvvmcross
[5] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[6] https://mentormate.com/blog/6-reasons-mvvmcross-speeds-xamarin-development-personalizes-ux/
[7] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-Overview
[8] https://stackoverflow.com/questions/14337063/platform specific-ioc-in-mvvmcross
[9] https://www.mvvmcross.com/documentation/getting-started/getting-started
[10] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[11] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-vhone-build-mvvm-apps-with-xamarin-and-mvvmcross