使用mvvmCross文件插件时,出现以下错误。我尝试使用使用“文件插件3.1.1-beta”的N-14代码示例,但出现错误,并且我还使用了一个新的新项目,从nuGet下载了最新的插件版本,我也遇到了相同的错误。这似乎与这个人遇到的问题相同:https://github.com/MvvmCross/MvvmCross/issues/510这似乎是错误消息中的主行:Failed to resolve parameter for parameter fileStore of type IMvxFileStorat Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.GetIoCParameterValues (System.Type type, System.Reflection.ConstructorInfo firstConstructor) [0x00000] in <filename unknown>:0我尝试重新启动xamarin Studio和MacPro等。我使用了location和Messenger插件,没有任何问题请指教跟踪: 2014-03-17 20:37:44.836 MCOTaxiIOS [2730:60b] TouchNavigation:诊断:0.56要求浏览 [0:] TouchNavigation:诊断:0.56要求浏览 在'/Developer/Projects/MCO/MCO.IOS/Views/FirstView.cs:58,1'到MonoTouch.UIKit.UIViewController MCO.IOS.Views.FirstView.CreateTabFor(字符串标题,字符串imageName,Cirrious。 MvvmCross.ViewModels.IMvxViewModel viewModel)[0x0002f]。 [0:] 2014-03-17 20:37:44.875 MCOIOS [2730:60b] mvx:Diagnostic:0.59请求为空-假设这是TabBar类型的情况,在构造过程中会调用ViewDidLoad ...现在为请求打补丁-但要当心施工期间虚拟通话的问题 [0:] mvx:诊断:0.59请求为空-假设这是TabBar类型的情况,其中在构造过程中调用ViewDidLoad ...现在修补请求-但在构造过程中请注意虚拟调用的问题 已解决“/Developer/Projects/MCO/MCO.Common/Services/LocationService.cs:110,1”上的待处理断点,以使MCO.Common.LocationService.OnError无效(Cirrious.MvvmCross.Plugins.Location.MvxLocationError错误)[0x00001] 。 [0:] 2014-03-17 20:37:44.917 MCOIOS [2730:60b] mvx:警告:0.64创建类型FirstViewModel的viewModel时遇到问题-问题MvxIoCResolveException:创建MCO.Common.ViewModels.FirstViewModel时无法解析IMvxFileStore类型的参数fileStore的参数 在Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.GetIoCParameterValues(System.Type类型,System.Reflection.ConstructorInfo firstConstructor)中:[0x00000],位于:0 在Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.IoCConstruct(System.Type type)[0x00000]中的位置:: 0 在Cirrious.CrossCore.Mvx.IocConstruct(System.Type t)[0x00000]中的位置:: 0 在Cirrious.MvvmCross.ViewModels.MvxDefaultViewModelLocator.TryLoad(System.Type viewModelType,IMvxBundle parameterValues,IMvxBundle savedState,IMvxViewModel&viewModel)[0x00000]在:0中 [0:] mvx:警告:0.64创建FirstViewModel类型的viewModel时遇到问题-问题MvxIoCResolveException:创建MCO.Common.ViewModels.FirstViewModel时无法解析IMvxFileStore类型的参数fileStore的参数 在Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.GetIoCParameterValues(System.Type类型,System.Reflection.ConstructorInfo firstConstructor)中:[0x00000],位于:0 在Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.IoCConstruct(System.Type type)[0x00000]中的位置:: 0 在Cirrious.CrossCore.Mvx.IocConstruct(System.Type t)[0x00000]中的位置:: 0 在Cirrious.MvvmCross.ViewModels.MvxDefaultViewModelLocator.TryLoad(System.Type viewModelType,IMvxBundle parameterValues,IMvxBundle savedState,IMvxViewModel&viewModel)[0x00000]在:0中堆栈跟踪: System.Reflection.TargetInvocationException:调用的目标引发了异常。 ---> System.Exception:无法从定位器MvxDefaultViewModelLocator构造和初始化类型CollectABull.Core.ViewModels.FirstViewModel的ViewModel-有关更多信息,请检查MvxTrace 在Cirrious.MvvmCross.ViewModels.MvxViewModelLoader.LoadViewModel处(Cirrious.MvvmCross.ViewModels.MvxViewModelRequest请求,IMvxBundle savedState,IMvxViewModelLocator viewModelLocator)[0x00000]在:0中 在Cirrious.MvvmCross.ViewModels.MvxViewModelLoader.LoadViewModel处(Cirrious.MvvmCross.ViewModels.MvxViewModelRequest请求,IMvxBundle savedState)在[0x00000]中:: 0 在0的Cirrious.MvvmCross.Touch.Views.MvxViewControllerExtensionMethods.LoadViewModel(IMvxTouchView touchView)[0x00000]中 在Cirrious.MvvmCross.Touch.Views.MvxViewControllerExtensionMethods + c_DisplayClass1.b_0()[0x00000]在:0中 在Cirrious.MvvmCross.Views.MvxViewExtensionMethods.OnViewCreate(IMvxView视图,System.Func`1 viewModelLoader)中[0x00000]在:0中 在Cirrious.MvvmCross.Touch.Views.MvxViewControllerExtensionMethods.OnViewCreate(IMvxTouchView touchView)[0x00000]中:0 在Cirrious.MvvmCross.Touch.Views.MvxViewControllerAdapter.HandleViewDidLoadCalled(System.Object发件人,System.EventArgs e)中:[0x00000],位于:0中 at at(包装委托调用):invoke_void_this__object_EventArgs(object,System.EventArgs) 在Cirrious.CrossCore.Core.MvxDelegateExtensionMethods.Raise(System.EventHandler eventHandler,System.Object sender)中[0x00000]在:0中 在Cirrious.CrossCore.Touch.Views.MvxEventSourceTabBarController.ViewDidLoad()[0x00000]中的位置:: 0 在/Developer/Projects/MCO/MCO.IOS/Views/FirstView.cs:26中的MCO.IOS.Views.FirstView.ViewDidLoad()[0x00002] 在/Developer/Projects/MCO/MCO.IOS/Views/FirstView.cs:18中的MCO.IOS.Views.FirstView..ctor()[0x0000f]中 在at(包装器管理的本机)System.Reflection.MonoCMethod:InternalInvoke(System.Reflection.MonoCMethod,object,object [],System.Exception&) 在/Developer/MonoTouch/Source/mono/mcs/class/corlib/System.Reflection/MonoMethod.cs:537中的System.Reflection.MonoCMethod.InternalInvoke(System.Object obj,System.Object []参数)[0x00002]处 最佳答案 MvvmCross插件通常分为两部分。核心PCL项目中包含接口。然后是特定于平台的实现:Android,iOS等。如果您查看NuGet软件包,您将看到各种平台目标。 NuGet将根据您的项目类型引用正确的程序集。MvvmCross使用IoC在运行时注入依赖项。您的ViewModel将引用IFileStore,而MvvmCross将在构造ViewModel时尝试解决该依赖性。但是,只有在接口的特定实现已注册的情况下,MvvmCross才能解决该问题。通常,您会在App.Initialize中使用代码来注册所有以“服务”结尾的类型。您还可以显式注册类型。由于插件具有通用模式,因此MvvmCross支持在启动时自动注册插件。它的实现方式是通过Bootstrap文件,该文件由NuGet添加到特定于平台的项目中。通常看起来像:public class FilePluginBootstrap : MvxPluginBootstrapAction<Cirrious.MvvmCross.Plugins.File.PluginLoader>{}在启动时,MvvmCross查找实现IMvxBootstrapAction的所有类型。每个插件还具有一个PluginLoader类,该类在MvvmCross中注册该类型。像这样:public class Plugin : IMvxPlugin{ public void Load() { Mvx.RegisterType<IMvxFileStore, MvxTouchFileStore>(); }}如您所见,通过在Core PCL项目和特定于平台的项目中安装插件包,MvvmCross具备了将自动在IoC容器中注册实现的所有部分。 TL; DR:确保在Core PCL和平台特定项目中都安装了插件。关于c# - Mvvmcross:文件插件错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22465070/
10-15 15:55