标签: prism-7

Prism 7 - 将 IContainer 对象注入视图模型

我最近有机会创建一个新的基于棱镜的应用程序。我用6.3版本已经有一段时间了,但是看到prism 7已经退出预发布,想试一试。我使用 Prism 模板包创建了一个新的棱镜应用程序,并且一切都按预期开箱即用。我更新了视图模型,就像在 6.3 中通常做的那样,传入容器,这样我就可以解析一些稍后会向视图提供信息的对象,在 6.3 中,我将执行以下操作:

public MainWindowViewModel(IRegionManager aRegionManager,
                           IUnityContainer aUnityContainer) : base()
Run Code Online (Sandbox Code Playgroud)

现在在 7.1.0.431 中,我尝试做同样的事情,但更新了接口以考虑新的 IOC 抽象。

public MainWindowViewModel(IRegionManager aRegionManager,
                           IContainerProvider aContainerProvider,
                           IContainerRegistry aContainerRegistry) : base()
Run Code Online (Sandbox Code Playgroud)

这会从 ViewModelLocator.AutoWireViewModel 中为 IContainerX 参数生成一个异常。

System.Exception {Unity.Exceptions.ResolutionFailedException}

{"Resolution of the dependency failed, type = 'Sample.ViewModels.MainWindowViewModel', name = '(none)'.\nException occurred while: while resolving.\nException is: InvalidOperationException - The current type, Prism.Ioc.IContainerProvider, is an interface and cannot be constructed. Are you missing a type 
Run Code Online (Sandbox Code Playgroud)

这就像我缺少一个引用,但我正在将该类型传递到应用程序的 RegisterTypes 调用中,因此应该找到所有引用。我对新的 7.X 版本做错了吗?

编辑:每@mnistic

这是模板包提供的 App.xaml.cs 中的代码,其中传入了 …

prism unity-container mvvm prism-7

4
推荐指数
1
解决办法
3343
查看次数

标签 统计

mvvm ×1

prism ×1

prism-7 ×1

unity-container ×1