我的代码如下所示:引导程序public class Bootstrapper : BootstrapperBase{ private SimpleContainer _container = new SimpleContainer(); public Bootstrapper() { Initialize(); } protected override void OnStartup(object sender, StartupEventArgs e) { base.OnStartup(sender, e); DisplayRootViewFor<ShellViewModel>(); } protected override void Configure() { _container.Singleton<IEventAggregator, EventAggregator>(); _container.Singleton<IWindowManager, WindowManager>(); _container.RegisterPerRequest(typeof(ShellViewModel), null, typeof(ShellViewModel)); } protected override object GetInstance(Type service, string key) { return _container.GetInstance(service, key); } protected override IEnumerable<object> GetAllInstances(Type serviceType) { return _container.GetAllInstances(serviceType); } protected override void BuildUp(object instance) { _container.BuildUp(instance); }}我的ShellViewModel样子是这样的:ShellViewModel.cspublic class ShellViewModel : Conductor<Screen>{ public ShellViewModel { var aViewModel = IoC.Get<AViewModel>(); ActivateItem(aViewModel); }}但是每当我运行程序时,都会显示一个空白屏幕。当我调试它时,它说aViewModel是null.有什么问题Bootstrapper吗?
1 回答
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
根据提供的代码,AViewModel
未在 Bootstrapper 中的容器中注册,因此IoC
不知道它存在,因此当请求Get
该类型时它将返回 null
例如
_container.RegisterPerRequest(typeof(AViewModel), null, typeof(AViewModel));
所有需要解析的类型IoC
都应该首先向后备容器注册。
- 1 回答
- 0 关注
- 331 浏览
添加回答
举报
0/150
提交
取消