2

我有一个非常基本的 prism 应用程序,我试图将其用作大型项目的开始。我有一个外壳,其中定义了一个名为“MainContent”的区域。项目中有3个模块。一个 MainMenuModule、一个 MovieModule 和一个 TVModule。Movie 和 TV 模块依赖于 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 的构造器完全相同,但可以毫无问题地工作。异常详细信息。

{“依赖项解析失败,type = \"TVModule.TVModule\", name = \"(none)\"。异常发生时:解析时。异常是:InvalidOperationException - 当前类型,Microsoft.Practices.Unity。 IUnityContainer,是一个接口,不能构造。你是不是缺少类型映射?在异常的时候,容器是:

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, (没有任何) ”}

{“当前类型,Microsoft.Practices.Unity.IUnityContainer,是一个接口,无法构造。你是否缺少类型映射?”}

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

4

1 回答 1

0

根据 Wiktor 的建议,我已经删除了将 Unity 容器传递给模块的构造函数。我现在使用服务定位器在需要时访问容器。

ServiceLocator.Current.GetInstance<IUnityContainer>();
于 2013-03-27T12:51:30.023 回答