尝试获取类型实例时发生Unity激活错误

时间:2013-04-25 04:20:15

标签: wpf silverlight prism unity-container

我正在使用Prism 4和Unity Extensions以及MVVM模式。

public class Bootstrapper : UnityBootstrapper {
    protected override void InitializeShell() {
        Application.Current.RootVisual = (UIElement) Shell;
    }

    protected override DependencyObject CreateShell()
    {
        return ServiceLocator.Current.GetInstance<Shell>();
    }
}

ServiceLocator.Current.GetInstance()抛出以下异常:

  

尝试获取Shell类型的实例时发生激活错误,   关键“”

2 个答案:

答案 0 :(得分:0)

shell构造函数中可能有错误。

如果在shell构造函数中有参数,例如,请不要忘记在Bootstrapper的ConfigureContainer中声明:

<强> Bootstrapper.cs

...
protected override void ConfigureContainer()
{
  base.ConfigureContainer();
  this.Container.RegisterType<IMyService, MyService>(new ContainerControlledLifetimeManager());
}

<强> Shell.cs

...
public Shell(IMyService container)
{
    ...
}

您可以阅读此文档:http://msdn.microsoft.com/en-us/library/gg430868(v=pandp.40).aspx

答案 1 :(得分:0)

我有两个单独的建议:

1)确保shell.xaml的name属性不为空

2)如果1无助于更改InitializeShell:

 IShellView shell = new Shell();
 shell.ShowView();
 return shell as DependencyObject;

我希望这些可以提供帮助。