C# WPF棱镜模块解析IUnityContainer时出错

C# WPF棱镜模块解析IUnityContainer时出错,c#,wpf,prism,unity-container,C#,Wpf,Prism,Unity Container,我有一个非常基本的prism应用程序,我正试图将其作为一个更大项目的开始。我有一个shell,其中定义了一个称为“MainContent”的区域。本项目共有3个模块。主模块、电影模块和电视模块。电影和电视模块依赖于主模块。使用DirectoryModuleCatalog加载模块。当包含TVModule时会出现问题,更具体地说,当调用TVModule的构造函数时会引发异常。下面的构造函数将抛出一个错误: public TVModule(IUnityContainer container, IReg

我有一个非常基本的prism应用程序,我正试图将其作为一个更大项目的开始。我有一个shell,其中定义了一个称为“MainContent”的区域。本项目共有3个模块。主模块、电影模块和电视模块。电影和电视模块依赖于主模块。使用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\”,名称=\“(无)”。 解析时发生异常。 异常为:InvalidOperationException-当前类型Microsoft.Practices.Unity.IUnityContainer是一个接口,无法构造。是否缺少类型映射? 发生异常时,容器为:

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

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


编辑:我已将Wiktor建议的源代码副本上传到dropbox,我已删除将Unity容器传递到模块构造函数的操作。我现在使用servicelocator在需要时访问容器

ServiceLocator.Current.GetInstance<IUnityContainer>();
ServiceLocator.Current.GetInstance();

是否将这两个模块都注册到
UnityContainer
?与
TVModule
相比,
MovieModule
的设置/注册方式有什么不同?除了MovieModule有一个TVModule没有的额外视图之外,实际上没有什么不同。请随意从我添加到问题中的dropbox链接下载我的源代码。这不是一个答案,而是一个很好的建议:您应该避免以显式方式在类之间传递ioc容器。它是支持解析服务的容器,但容器本身不是业务服务。传递容器会使类依赖于坏的容器-ioc应该会帮助您而不是破坏代码。因此,在需要注册类型时,我应该使用ServiceLocator.Current.GetInstance()而不是将容器传递到构造函数中吗?