Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVMCross-viewmodel中的IBarCodeService注册_C#_.net_Windows Phone 8_Mvvmcross - Fatal编程技术网

C# MVVMCross-viewmodel中的IBarCodeService注册

C# MVVMCross-viewmodel中的IBarCodeService注册,c#,.net,windows-phone-8,mvvmcross,C#,.net,Windows Phone 8,Mvvmcross,在MVVMCross中的我的viewmodel中是否有注入IBarCodeService的接口?类似于ISQLiteConnectionFactory的ISQLConnection 如果有人知道,请帮助我 提前谢谢 你有几种方法可以做到这一点。。。您可以设置自己的MvvmCross插件,该插件通过引导文件实现这一点。正如您所见,Stuart向用户展示了如何创建插件 如果您不想创建自己的插件,也可以利用iOS/Android项目中Setup.cs中的InitializeLasChance例程。例如

在MVVMCross中的我的viewmodel中是否有注入IBarCodeService的接口?类似于ISQLiteConnectionFactory的ISQLConnection

如果有人知道,请帮助我


提前谢谢

你有几种方法可以做到这一点。。。您可以设置自己的MvvmCross插件,该插件通过引导文件实现这一点。正如您所见,Stuart向用户展示了如何创建插件

如果您不想创建自己的插件,也可以利用iOS/Android项目中Setup.cs中的InitializeLasChance例程。例如,我的InitializeLastChance()如下所示:

    protected override void InitializeLastChance()
    {
        Mvx.LazyConstructAndRegisterSingleton<ISecurePersistenceService, SecurePersistenceService>();
        base.InitializeLastChance();
    }

这一切都是可能的,因为MvvmCross正在利用自己的功能。

最后,我使用了ZXing条形码服务和Lumia imaging SDK进行相机拍摄。通过这些组合,条形码扫描工作正常。

我不知道MVVMCross,但我非常确定,如果要注入自定义接口实现,您必须使用依赖注入框架。IBarCodeService来自何处?如何在MvxApplication的IoC容器中注册类型?例如,在我的
App.Initialize
中,我打电话注册所有以
Service
结尾的类型。感谢您的回复。IBarCodeService内置于MVVMCross条形码插件中。我正试图通过构造函数注入此服务。此注入与ISQLiteConnectionFactory和IMvxFileStore一起工作。该框架为这些服务创建实例,但不为iBarCodeService创建实例。该服务不是内置的MvvmCross插件。这是一个由外部插件管理的插件,您可以通过在软件包管理器中运行以下命令来下载该插件:Install package Acr.MvvmCross.Plugins.barcodescanner非常感谢您的详细回答。这里的问题是MVVMCross无法解决IBarCodeService。当我执行var scan=Mvx.Resolve();,我得到“未能解析类型Acr.MvvmCross.Plugins.BarCodeScanner.IBarCodeService”异常。在我的项目的要求是扫描条码使用WindowsMobile 8.1,它应该是独立于平台。该功能应在IOS和Android中运行。MVVMCross条形码插件与平台无关,但不确定如何解析IBarCodeService。请验证Windows Phone 8.1项目中是否安装了Acr.MVVMCross.Plugins.BarCodeScanner软件包。然后验证您是否有一个包含BarCodeScannerPluginBootstrap.cst的引导文件夹非常感谢您的回复。我在我的项目中安装了这个插件。但我的项目中缺少引导文件。我在Bootstrap文件夹下手动添加了它,并添加了下面的代码。公共类BarCodeScannerPluginBootstrap:MVXPluginBootstrapacation{}。。。但是没有运气。出现异常。默认情况下,当我为sqlite或filestore安装插件时,我会得到这个引导文件。但我没有得到条形码插件。我有一个小疑问,这个插件不支持WindowsPhone8.1吗?如果我看一下这里的项目:我没有看到插件引导设置。您应该能够使用上面的初始化最后机会代码手动加载它。请发布您尝试此功能时遇到的任何异常。感谢您的回复。这种注册方式在WP8.0中有效。但当我调用read方法时,并没有实现异常。在WP8.1中,我无法注册插件本身。我尝试在App.cs public override void LoadPlugins(cirriary.CrossCore.Plugins.IMvxPluginManager pluginManager){base.LoadPlugins(pluginManager);pluginManager.ensureReplatFormatAdaptionLoaded();}中使用以下方法加载插件。但我遇到“无法加载程序集”异常。请使用问题的编辑链接添加其他信息。“发布答案”按钮只能用于完整回答问题。@JamesKPolk这不是附加信息吗?这是答案。再读一遍。OP找到了解决方案,并与其他用户分享了他的经验。答案很差……但那是另一回事。
var securePersistenceService = Mvx.Resolve<ISecurePersistenceService>();
private readonly ISecurePersistenceService persistenceService;

public MyViewModel(ISecurePersistenceService persistenceService)
{
    this.persistenceService = persistenceService
}