【发布时间】:2014-03-23 15:28:08
【问题描述】:
我有一个 WPF 应用程序,它包含一个 MainWindow,以及可以通过 MainWindow 访问的各种 Page 对象。我目前在MainWindow 的ViewModel 中实例化了一个User 类,它定义了绑定到相应View 中的各种属性的权限属性:
public NavigationViewModel()
{
_currentUser = new User(_currentServerConnection, Environment.UserName);
现在,我想在每个Page 对象的ViewModels 中访问同一个User 实例。从设计的角度来看,最合适的方法是什么?我已经阅读了 StackOverflow 上的多个线程,并得出的结论是我应该创建这个类 static(这里没有意义,这个类有一个 state),或者在每个 ViewModel 中实例化它.还有其他我可能会错过的选择吗?哦,我也读过关于单例类的文章,这显然是不建议的。我觉得我在这里遗漏了一些基本概念。
【问题讨论】:
-
不建议使用单身人士。建议不要在错误的地方或错误的方式使用单例。您的整个问题都在尖叫是何时使用单例的“正确”和“正确”示例。
-
静态和单例之间的唯一区别是单例在第一次使用之前不会被实例化。单例也可以在多线程应用程序中正常工作。带锁msdn.microsoft.com/en-us/library/ff650316.aspx
-
您也可以混合使用 IOC 和 Singleton 模式。您创建一个接口。您创建一个实现该接口的 Singleton。然后你的 IOC 控制器/工厂每次都使用你的单例。
-
@Rhyous 在阅读了您最初的评论后,我决定投入更多时间研究单例及其用途。由于功能和简单性,这似乎是我想要走的路线。现在,很抱歉获得元数据,但似乎没有任何方法可以将您的评论标记为“答案”。我应该在这里做什么?谢谢!
-
我可以将我的 cmets 移动到一个答案。
标签: c# wpf mvvm view viewmodel