gpt4 book ai didi

c# - MVVM 光 ViewModelLocator : How to register Singleton ViewModel?

转载 作者:行者123 更新时间:2023-11-30 20:37:38 28 4
gpt4 key购买 nike

我熟悉 MVVM Light 工具包的 ViewModelBase、Message,但不熟悉 ViewModelLocator。在我的应用程序中有 Singleton ViewModel,例如 PrinterViewModel。注册就像

SimpleIoc.Default.Register<IPrinter,PrinterViewModel>();

调试时,错误类似于“无法注册:未找到公共(public)构造函数”。

所以 2 个问题:

  1. 使用 Singleton ViewModel 是个坏主意吗?
  2. 如何注册 Singleton ViewModel,因为我没有找到任何重载来为特定接口(interface)传递实例?

最佳答案

1) 根据一般经验,是的。设置作用域是注入(inject)框架的工作。您可能有一个数据库存储库类(比方说)需要 WPF 构建中的每个表单范围(以便用户可以取消编辑)、Web 构建中的每个请求范围和命令行工具中的单例范围。类本身及其任何使用者都不应知道该对象的作用域是什么。

2) 一个简单(但不是很好)的解决方案是将单例实例添加到您的 ViewModelLocator 并始终返回它。另一种是在没有 key 的情况下只调用 GetInstance() 并依赖于延迟创建。不过,我不是 SimpleIoC 的 super 粉丝,它对我来说有点简单了。尝试看看功能更全面的框架,例如 Ninject,您会发现它们的使用更加灵活和流畅,例如:

Bind<IPrinter>().To<PrinterViewModel>().InSingletonScope();

关于c# - MVVM 光 ViewModelLocator : How to register Singleton ViewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35858413/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com