在我的 prism 应用程序中,我在尝试获取 CustomerModule 类型的实例时收到错误 Activation error occurred, key \"\"。
这是因为我的客户模块我试图注入一个 IMenuManager 类型的“ menuManager ” :
namespace CustomerModule
{
public class CustomerModule : IModule
{
private readonly IRegionManager regionManager;
private readonly IUnityContainer container;
private readonly IMenuManager menuManager;
public CustomerModule(IUnityContainer container,
IRegionManager regionManager,
IMenuManager menuManager)
{
this.container = container;
this.regionManager = regionManager;
this.menuManager = menuManager;
}
public void Initialize()
{
container.RegisterType<IMenuManager, MenuManager>(new ContainerControlledLifetimeManager());
...
但是,如果我将 CustomerModule 构造函数更改为注入类型而不是接口,那么它可以工作:
public CustomerModule(IUnityContainer container,
IRegionManager regionManager,
MenuManager menuManager)
那么我需要在哪里注册我的 MenuManager 来实现 IMenuManager?似乎在 CustomerModule 的 Initialize 方法中注册它为时已晚。
回答:
我把它放在 ConfigureContainer() 中,它工作正常,一定要留在“base.ConfigureContainer()”中:
protected override void ConfigureContainer()
{
base.ConfigureContainer();
Container.RegisterType<MenuManager>(new ContainerControlledLifetimeManager());
}