【发布时间】:2018-10-27 08:09:05
【问题描述】:
我在我的项目中使用带有 MVVM Light 的 WPF。我有一些关于SimpleIoC 容器和 DI 的小问题。哪种方法更好用或者告诉我我是否不需要在那里使用 DI。
有我的虚拟机构造函数:
public MainViewModel(IDialogService dialogService, IChannelObserverService channelObserverService, IInternalBroadcastService internalBroadcastService,
IUserDataAccessService userDataAccessService, IUserService userService)
还有 SimpleIoC 寄存器:
SimpleIoc.Default.Register<MainViewModel>(() => {
return new MainViewModel(SimpleIoc.Default.GetInstance<IDialogService>(),
SimpleIoc.Default.GetInstance<IChannelObserverService>(),
SimpleIoc.Default.GetInstance<IInternalBroadcastService>(),
SimpleIoc.Default.GetInstance<IUserDataAccessService>(),
SimpleIoc.Default.GetInstance<IUserService>()); });
请告诉我,我需要在那里使用 DI 吗? 首先,我使用了这样的所有服务:
public MainViewModel(){...}
User user = SimpleIoc.Default.GetInstance<IUserService>().GetCurrentLoggedUser();
或者这个:
private IDialogService dialogService;
public MainViewModel()
{
dialogService = = SimpleIoc.Default.GetInstance<IUserService>();
}
private void MyMethod()
{
dialogService.ShowQuestionDialog(abc,abc,abc);
}
所以我在创建视图模型时没有使用 DI。
【问题讨论】:
标签: c# wpf mvvm inversion-of-control mvvm-light