私は Xamarin Forms アプリに取り組んでおり、Windows Phone のビルドと実行はすべて順調に進んでいます。ただし、Android バージョンを実行しようとすると、正常にビルドされてから失敗し、ViewModelLocator で ViewModel を解決するために ServiceLocator を呼び出すときに例外が発生します。
ViewModelLocator の改行
return ServiceLocator.Current.GetInstance<MainViewModel>();
と
System.Reflection.TargetInvocationException
Source "mscorlib" string
StackTrace "at System.Reflection.MonoMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Bind…"
「GetInstance」ショーにカーソルを合わせます
Could not resolve type: global::Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<global::hms.BillSplitter.ViewModel.PCL.MainViewModel>
私のViewModelの唯一のコンストラクタは次のようになります
public MainViewModel(INavigationService navigationService, ICountryTippingService countryTippingService, AppSettings appSettings)
{
_navigationService = navigationService;
_countryTippingService = countryTippingService;
ThisAppSettings = appSettings;
ThisBillDetail = new BillDetail();
ThisBillDetail.TotalOnBill = 0;
}
すべての依存関係は、ViewModelLocator
たとえば、これに先立って登録されます
SimpleIoc.Default.Register(() => new HmsPublicCoreMobileServiceClient(HmsCommonSettingConstants.HmsPublicCoreServiceUrl, HmsCommonSettingConstants.HmsPublicCoreServiceAppKey));
var prefService = ServiceLocator.Current.GetInstance<IPreferenceService>();
SimpleIoc.Default.Register(() => (SettingsHelper.GetCurrentSettings(prefService)));
SimpleIoc.Default.Register<MainViewModel>();
MainActivity.cs (Android) および AppDelegate(iOS) などのプラットフォーム固有のものもあります。
SimpleIoc.Default.Register(() => new PreferenceService(this));
私が得られないのは、Windows Phone で美しく動作するということですか? Android との違いは何ですか? Xamarin 1.3 以降で SimpleIoc を使用した人はいますか?
ビューモデルを作成するためにファクトリを使用する必要がありますか?
どんな助けでも大歓迎です。MVVMLight (5.1.0.1) と Xamarin (1.3.3) のすべての最新バージョンを使用しています。