WPF Prism模块错误解析IUnityContainer

时间:2013-03-20 18:08:15

标签: c# wpf prism unity-container

我有一个非常基本的棱镜应用程序,我试图用它来作为一个更大的项目的开始。我有一个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完全相同,但却没有问题。例外细节。

  

{“依赖关系的解析失败,输入= \”TVModule.TVModule \“,name = \”(none)\“。   在解决时发生异常:       例外情况是:InvalidOperationException - 当前类型Microsoft.Practices.Unity.IUnityContainer是一个接口,无法构造。你错过了类型映射吗?       在例外时,容器是:

     

解析TVModule.TVModule,(无)       解析构造函数TVModule.TVModule的参数\“container \”(Microsoft.Practices.Unity.IUnityContainer容器,Microsoft.Practices.Prism.Regions.IRegionManager manager)       解析Microsoft.Practices.Unity.IUnityContainer,(无)       “}

     

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

编辑:我已将我的来源的副本上传到dropbox here

1 个答案:

答案 0 :(得分:0)

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

ServiceLocator.Current.GetInstance<IUnityContainer>();
相关问题