在我的bootstrapper文件中,我想显示我的视图模型的根视图,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方法中做错了。有人可以识别并纠正我的错误吗?
答案 0 :(得分:0)
假设v2.xx为CM,则start()应为Initialize()。请参考以下代码为自己节省一些打字。
container.Singleton<ONH836ViewModel>();
对于你的接口,我建议
container.Instance<IExportedDataMonitor>(new FakeExportDataMonitor());
他们可以被链接......
container.Instance<IGasLabWorkListService>(new FakeGasLabWorklistService())
.Instance<IRawDataConduit>(new FakeRawDataConduit())
.Instance<ISettingService>(new FakeSettingService());
NullReference的原因很可能是由于在构造函数中没有调用Initialize()而导致从未调用Configure。