gpt4 book ai didi

c# - Caliburn.Micro DisplayRootViewFor 抛出 NullReferenceException

转载 作者:太空狗 更新时间:2023-10-29 22:30:20 24 4
gpt4 key购买 nike

我的 Bootstrap 中有以下代码:

private SimpleContainer container;

protected override void Configure()
{
container = new SimpleContainer();
container.Singleton<IEventAggregator, EventAggregator>();
container.PerRequest<InitialViewModel>();
}

protected override object GetInstance(Type service, string key)
{
return container.GetInstance(service, key);
}

protected override IEnumerable<object> GetAllInstances(Type service)
{
return container.GetAllInstances(service);
}

protected override void BuildUp(object instance)
{
container.BuildUp(instance);
}

在 OnStartup 方法中,我调用了 DisplayRooViewFor 方法:

protected override void OnStartup(object sender, StartupEventArgs e)
{
DisplayRootViewFor<InitialViewModel>();
}

这是 InitialViewModel:

    private IEventAggregator eventAggregator;    

public InitialViewModel(IEventAggregator ea)
{
eventAggregator = ea;
}

不幸的是,它抛出一个NullReferenceException:

An exception of type 'System.NullReferenceException' occurred in Caliburn.Micro.Platform.dll but was not handled in user code

我查看了CM的源代码并使用相同的代码对其进行了测试:

  protected override void OnStartup(object sender, StartupEventArgs e)
{
var viewModel = IoC.GetInstance(typeof(InitialViewModel), null);
var view = ViewLocator.LocateForModel(viewModel, null, null);
ViewModelBinder.Bind(viewModel, view, null);

var activator = viewModel as IActivate;
if (activator != null)
activator.Activate();

DisplayRootViewFor<InitialViewModel>();
}

奇怪的是,这些行没有异常。 viewviewmodel 都有引用,InitialView 的构造函数被调用,但是当它到达并调用 DisplayRootViewFor , 它仍然会抛出异常。

我应该改变什么?

最佳答案

我的容器缺少一个关键组件:

container.Singleton<IWindowManager, WindowManager>();

关于c# - Caliburn.Micro DisplayRootViewFor 抛出 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35721047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com