gpt4 book ai didi

c# - WPF Prism 模块错误解决 IUnityContainer

转载 作者:太空宇宙 更新时间:2023-11-03 16:16:58 25 4
gpt4 key购买 nike

我有一个非常基本的 Prism 应用程序,我正试图将其用作一个更大项目的开始。我有一个 shell,其中定义了一个名为“MainContent”的区域。项目中有3个模块。一个 MainMenuModule、一个 MovieModule 和一个 TVModule。电影和电视模块依赖于 MainMenuModule。使用 DirectoryModuleCatalog 加载模块。当包含 TVModule 时会出现此问题,更具体地说,在调用 TVModule 的构造函数时会抛出异常。下面的构造函数将抛出一个错误:

public TVModule(IUnityContainer container, IRegionManager manager)
{
_container = container;
_manager = manager;
}

如果我将构造函数更改为以下内容,我不会出现异常,并且 TVModule 会按预期加载。

public TVModule(IRegionManager manager)
{
_manager = manager;
}

当 Unity 尝试解析 IUnityContainer 时抛出我得到的异常。真正让我感到困惑的是,MovieModule 的构造器与 TVModule 的构造器完全相同,但可以正常工作。异常详细信息。

{"Resolution of the dependency failed, type = \"TVModule.TVModule\", name = \"(none)\". Exception occurred while: while resolving. Exception is: InvalidOperationException - The current type, Microsoft.Practices.Unity.IUnityContainer, is an interface and cannot be constructed. Are you missing a type mapping? At the time of the exception, the container was:

Resolving TVModule.TVModule,(none) Resolving parameter \"container\" of constructor TVModule.TVModule(Microsoft.Practices.Unity.IUnityContainer container, Microsoft.Practices.Prism.Regions.IRegionManager manager) Resolving Microsoft.Practices.Unity.IUnityContainer,(none) "}

{"The current type, Microsoft.Practices.Unity.IUnityContainer, is an interface and cannot be constructed. Are you missing a type mapping?"}

编辑:我已将源代码的副本上传到保管箱 here

最佳答案

根据 Wiktor 的建议,我删除了将 Unity 容器传递给模块构造函数的步骤。我现在使用 servicelocator 在需要时访问容器。

ServiceLocator.Current.GetInstance<IUnityContainer>();

关于c# - WPF Prism 模块错误解决 IUnityContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15531459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com