我使用多个模块开发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?
答案 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)
{
}