在我的引导程序文件中,我想显示我的视图模型ONH836ViewModel的根视图。这个视图模型源自BaseViewModel,它有一个带有五个参数的构造函数:
public BaseViewModel(IExportedDataMonitor monitor, IGasLabWorklistService worklistService, IRawDataConduit rawDataConduit,
ISettingService settingService, IDataReportingService dataReportingService)
以下是引导程序中的相关代码:
class AppInitializer : BootstrapperBase
{
SimpleContainer container = new SimpleContainer();
public AppInitializer()
{
Start();
}
protected override void OnStartup(object sender, System.Windows.StartupEventArgs e)
{
base.OnStartup(sender, e);
DisplayRootViewFor<ONH836ViewModel>();
}
protected override void Configure()
{
container.RegisterSingleton(typeof(IExportedDataMonitor), null, typeof(FakeExportedDataMonitor));
container.RegisterSingleton(typeof(IGasLabWorklistService), null, typeof(FakeGasLabWorklistService));
container.RegisterSingleton(typeof(IRawDataConduit), null, typeof(FakeRawDataConduit));
container.RegisterSingleton(typeof(ISettingService), null, typeof(FakeSettingService));
container.RegisterSingleton(typeof(IDataReportingService), null, typeof(FakeDataReportingService));
container.RegisterSingleton(typeof(BaseViewModel), null, typeof(ONH836ViewModel));
}
OnStartup方法在DisplayRootView行上抛出一个NullReferenceException。我认为发生这种情况是因为我在Configure方法中做了错误的事情。有人能识别并纠正我的错误吗?
Start()应该是Initialize(),假设是v2.xx的CM。
container.Singleton<ONH836ViewModel>();
对于您的接口,我建议
container.Instance<IExportedDataMonitor>(new FakeExportDataMonitor());
他们可以被锁住。。。
container.Instance<IGasLabWorkListService>(new FakeGasLabWorklistService())
.Instance<IRawDataConduit>(new FakeRawDataConduit())
.Instance<ISettingService>(new FakeSettingService());
NullReference的原因很可能是由于构造函数中未调用Initialize()而从未调用Configure。