我有一个非常基本的棱镜应用程序,我试图用它来作为一个更大的项目的开始。我有一个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
答案 0 :(得分:0)
从Wiktor的建议中,我删除了将Unity容器传递给模块的构造函数。我现在使用servicelocator在需要时访问容器。
ServiceLocator.Current.GetInstance<IUnityContainer>();