从 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
如何使用 Prism 8 做同样的事情?
我使用 Unity。
非常感谢您的帮助。
【问题讨论】:
【参考方案1】:如果您不喜欢 Prism 的容器抽象,可以使用容器特定的静态方法 GetContainer
来访问底层容器:
using Prism.Unity;
IEnumerable rights = ContainerLocator.Container.GetContainer().GetAllInstances<CheckNavigationRights>().SelectMany(c => c.Rights).Distinct();
顺便说一句:您可以注入或解析 IEnumerable<CheckNavigationRights>
以获取所有命名注册。
【讨论】:
感谢您非常清晰准确的帮助。以上是关于从 Prism 7 迁移到 Prism 8的主要内容,如果未能解决你的问题,请参考以下文章