从 Prism 7 迁移到 Prism 8
Migration from Prism 7 to Prism 8
我正在尝试从 Prism 7.1.0.431 升级到 8.1.97,但遇到了几个问题。
我认为我最大的问题在于将“CommonServiceLocator.ServiceLocator.Current”替换为“Prism.Ioc.ContainerLocator.Container”。
(我知道这是一种反模式,...但这不是重点)
我不知道如何替换:ServiceLocator.Current.GetAllInstances<>()
例如,在这行代码中,我获得了应分配给用户的应用程序(在模块中)的所有可用权限:
IEnumerable 权限 = ServiceLocator.Current.GetAllInstances().SelectMany(c => c.Rights).Distinct();
我怎样才能用 Prism 8 做同样的事情?
我用Unity。
非常感谢您的帮助。
如果您不喜欢 Prism 的容器抽象,可以使用特定于容器的静态方法GetContainer
来访问底层容器:
using Prism.Unity;
IEnumerable rights = ContainerLocator.Container.GetContainer().GetAllInstances<CheckNavigationRights>().SelectMany(c => c.Rights).Distinct();
顺便说一句:您可以注入或解析 IEnumerable<CheckNavigationRights>
以获得所有命名的注册。
我正在尝试从 Prism 7.1.0.431 升级到 8.1.97,但遇到了几个问题。
我认为我最大的问题在于将“CommonServiceLocator.ServiceLocator.Current”替换为“Prism.Ioc.ContainerLocator.Container”。 (我知道这是一种反模式,...但这不是重点)
我不知道如何替换:ServiceLocator.Current.GetAllInstances<>()
例如,在这行代码中,我获得了应分配给用户的应用程序(在模块中)的所有可用权限:
IEnumerable 权限 = ServiceLocator.Current.GetAllInstances
我怎样才能用 Prism 8 做同样的事情?
我用Unity。
非常感谢您的帮助。
如果您不喜欢 Prism 的容器抽象,可以使用特定于容器的静态方法GetContainer
来访问底层容器:
using Prism.Unity;
IEnumerable rights = ContainerLocator.Container.GetContainer().GetAllInstances<CheckNavigationRights>().SelectMany(c => c.Rights).Distinct();
顺便说一句:您可以注入或解析 IEnumerable<CheckNavigationRights>
以获得所有命名的注册。