简单棱镜引导程序

时间:2016-08-02 23:55:32

标签: c# wpf prism

我目前将我的程序移植到使用Prism 6,它是一个WPF应用程序。 所以我安装了Prism.Unity(6.1.1),它带有Prism.Wpf(6.1.0),Prism.Core(6.1.0),Unity(4.0.1)和CommonServiceLocator(1.3.0)。

然后我带来了那些PRISM样本,但是为了上帝的爱,我无法让它运行起来。 这是我的Bootstrapper:

public class Bootstrapper : Prism.Unity.UnityBootstrapper
{
    /// <exception cref="ActivationException">If there are errors resolving the shell instance.</exception>
    protected override DependencyObject CreateShell()
    {
        return Container.Resolve<Shell>();
    }

    protected override void InitializeShell()
    {
        base.InitializeShell();

        Application.Current.MainWindow = (Window)this.Shell;
        Application.Current.MainWindow.Show();
    }

    protected override void ConfigureContainer()
    {
        base.ConfigureContainer();

        this.RegisterTypeIfMissing(typeof(IWorkRepository), typeof(WorkRepository), true);
    }
}

不幸的是我无法启动它。 VS 2015表示需要运行System.Runtime

return Container.Resolve<Shell>();

但是一旦添加,整个类被标记为错误。如果我直接启动它,我得到的例外是它无法加载Microsoft.Practices.ServiceLocation。 我很想知道依赖,因为几个帖子(包括ms)建议删除所有实践。*。

非常感谢帮助,因为我无法让它运行。 :(

1 个答案:

答案 0 :(得分:1)

你使用了什么using

整个引导程序可以像这样简单(由Prism模板创建):

using Microsoft.Practices.Unity;
using Prism.Unity;
using PrismUnityApp2.Views;
using System.Windows;

namespace PrismUnityApp2
{
    class Bootstrapper : UnityBootstrapper
    {
        protected override DependencyObject CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }

        protected override void InitializeShell()
        {
            Application.Current.MainWindow.Show();
        }
    }
}

并且System.Runtime不需要作为参考。可能你无意中使用了一个命名空间(而不是Microsoft.Practices.Unity扩展名所在的Container.Resolve<>