在Prism 7.1中,IModule接口已从6.3版更改,现在公开了两个方法 RegisterTypes (IContainerRegistry containerRegistry)和 OnInitialized (IContainerProvider containerProvider)。我请求原谅,但是我不明白如何注册在模块中实现的视图。它可能是如此简单,以至于我看不到问题的解决方案。您能给我一个例子,让我最终理解我该怎么做吗?无论到哪里看,我都只发现有关版本6.3的示例,我对此非常了解。
答案 0 :(得分:2)
Prism 7.X在DI容器周围引入了一种抽象。造成这种情况的原因很多,但最重要的两个是:
重要的是要了解,通过抽象化Container,我们还对负责注册View的Container Extensions进行了更改。具体来说,我们现在将它们放在IContainerRegistry上。因此,此处给出了示例Prism 6.X模块:
public class ModuleA
{
private IUnityContainer _container { get; }
public ModuleA(IUnityContainer container)
{
_container = container;
}
public void Initialize()
{
// register stuff
_container.RegisterViewForNavigation<ViewA>();
// Setup Event listeners etc...
var ea = _container.Resolve<IEventAggregator>();
}
}
我们将其更新为:
public class ModuleA
{
public void OnInitialized(IContainerProvider containerProvider)
{
// Setup Event listeners etc...
var ea = containerProvider.Resolve<IEventAggregator>();
}
public void RegisterTypes(IContainerRegistry containerRegistry)
{
// register stuff
containerRegistry.RegisterForNavigation<ViewA>();
}
}
答案 1 :(得分:0)
它可能是如此简单,以至于我看不到问题的解决方法
只需使用RegisterTypes
-毕竟,注册视图就是注册类型。