MvvmCross在Xamarin iOS7和XCode 5中使用IoC注册接口

Web*_*ger 1 xamarin.ios mvvmcross xamarin

我在使用IoC激活IMvxMessenger时遇到问题.(Mac,Xamarin Studio,iOS7,Mono 3.2)

我已经下载了NPlus1DaysOfMvvmCross并加载了N37 Maps项目.

编译项目,它工作正常.

然后我将Cirrious.MvvmCross.Plugins.Messenger.dll添加到项目中,并将以下代码添加到app.cs初始化服务IoC调用之下.

CreatableTypes (typeof(IMvxMessenger).Assembly).AsInterfaces ().RegisterAsSingleton ();
Run Code Online (Sandbox Code Playgroud)

编译时我收到并收到错误:创建Cirrious.MvvmCross.Plugins.Messenger.MvxSubscriptionToken时无法解析Guid类型参数id的参数

Che*_*ron 6

IMvxMessenger是一个插件,不需要像你一样注册IoC.通过bootstrap为要在项目中使用的每个插件创建一个类来注册插件,如下所示:

public class MessengerPluginBootstrap
    : MvxPluginBootstrapAction<Cirrious.MvvmCross.Plugins.Messenger.PluginLoader>
{
}
Run Code Online (Sandbox Code Playgroud)

一些具有平台相关部分的插件,例如Visibility Plugin,需要在iOS上以不同的方式注册,因为它很愚蠢:

public class VisibilityPluginBootstrap
    : MvxLoaderPluginBootstrapAction<Cirrious.MvvmCross.Plugins.Visibility.PluginLoader, Cirrious.MvvmCross.Plugins.Visibility.Touch.Plugin>
{
}
Run Code Online (Sandbox Code Playgroud)

这样你就可以使用IoC来使用插件内部的类型.