从 Prism 7 迁移到 Prism 8

Posted

技术标签:

【中文标题】从 Prism 7 迁移到 Prism 8【英文标题】:Migration from Prism 7 to Prism 8 【发布时间】:2022-01-17 16:21:09 【问题描述】:

我正在尝试从 Prism 7.1.0.431 升级到 8.1.97,但遇到了几个问题。

我认为我最大的问题来自将“CommonServiceLocator.ServiceLocator.Current”替换为“Prism.Ioc.ContainerLocator.Container”。 (我知道这是一种反模式,...但这不是重点)

我不知道如何替换:ServiceLocator.Current.GetAllInstances()

例如,在这行代码中,我获得了应用程序(在模块中)中应该分配给用户的所有可用权限:

IEnumerable rights = ServiceLocator.Current.GetAllInstances().SelectMany(c => c.Rights).Distinct();

如何使用 Prism 8 做同样的事情?

我使用 Unity。

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

如果您不喜欢 Prism 的容器抽象,可以使用容器特定的静态方法 GetContainer 来访问底层容器:

using Prism.Unity;

IEnumerable rights = ContainerLocator.Container.GetContainer().GetAllInstances<CheckNavigationRights>().SelectMany(c => c.Rights).Distinct();

顺便说一句:您可以注入或解析 IEnumerable&lt;CheckNavigationRights&gt; 以获取所有命名注册。

【讨论】:

感谢您非常清晰准确的帮助。

以上是关于从 Prism 7 迁移到 Prism 8的主要内容,如果未能解决你的问题,请参考以下文章

OnNavigatingTo 在 XF Prism 7 中未触发

C# WPF MVVM模式Prism框架从零搭建(经典)

C# WPF MVVM模式Prism框架从零搭建(经典)

谁有graphpad prism 7破解版本

从PRISM开始学WPFPrism?

从PRISM开始学WPFMVVMViewModel?