【问题标题】:Migration from Prism 7 to Prism 8从 Prism 7 迁移到 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。

非常感谢您的帮助。

【问题讨论】:

    标签: migration prism unity-container


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您非常清晰准确的帮助。
    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多