我在我的引導程序下面的代碼:Caliburn.Micro DisplayRootViewFor引發的NullReferenceException
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:
類型「System.NullReferenceException」的異常出現在 Caliburn.Micro.Platform.dll但在用戶代碼中沒有處理
我檢查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>();
}
奇怪的是,這些行沒有例外。 視圖和視圖模型有參考,並且InitialView的構造函數被調用,但是當它到達並調用DisplayRootViewFor
時,它仍會引發異常。
我應該改變什麼?
謝謝你的更正。不幸的是,刪除屬性並從屏幕繼承不能解決問題,異常仍然存在。 – Nestor