我应该添加" Prism.Unity 6.2.0"或者只是" Microsoft.Practices.Unity"在Prism模块参考中获取IUnityContainer?

时间:2016-02-18 10:43:09

标签: c# wpf prism

我使用多个模块开发Prism 6应用程序,我需要在每个模块的类中定义一个IUnityContainer实例。例如:

[Module(ModuleName = "AuthorizationModule", OnDemand = false)]
public class AuthorizationModule : IModule
{
    IRegionManager _regionManager;
    private readonly IUnityContainer container;
    . . . . .
}

但是在模块中没有引用IUnityContainer的程序集引用。我应该添加对#34; Prism.Unity 6.2.0"的引用吗?汇编或我可以通过添加对" Microsoft.Practices.Unity"的引用进行限制。汇编以获得IUnityContainer?

3 个答案:

答案 0 :(得分:1)

您不必添加Prism.Unity包,因为它主要包含Shell应用程序使用的类。您唯一会错过的是Unity扩展方法,例如RegisterTypeForNavigation,可以更轻松地注册导航视图。所以只需添加您的容器包即可。

答案 1 :(得分:0)

您应该添加对Microsoft.Practices.Unity.dll的引用以使用IUnityContainer

如果您不使用DependencyInjection,则无需使用IUnityContainer。但是,如果没有DI,你将失去虱子耦合,单元测试,模拟的所有优点。

答案 2 :(得分:0)

使用Nuget将Prism.Unity包添加到解决方案中的模块项目中。这样,您可以轻松获得所需程序集的引用,并且可以让主DI容器通过模块构造函数注入对自身的引用。在您的模块中使用Prism.Unity包及其依赖项很可能是您无论如何都需要的。

public ModuleA(IUnityContainer container) 
{ 
}