我正在WPF c#中开发一个软件。我的软件有多个窗口。我需要在多个窗口中共享同一个on对象实例(我使用的是旧代码,所以我不能让该对象为静态)。是否有一个很好的做法是让一个静态类具有需要在多个窗口中共享的变量,这样我就可以避免将它们传递给构造函数。谢谢跨多个Windows的共享变量的静态类
-4
A
回答
1
你既可以使用静态类,也可以使用同一个单例实例注入所有窗口/视图模型。请注意,这不一定必须是实际实现单例设计模式的类,但需要确保使用相同的实例注入窗口/视图模型。
后一种方法是优先考虑的方法,主要是因为非静态共享类可以实现一个接口,使您可以轻松地用另一个接口替换实现,从而使单元测试您的类变得更容易。
因此,至少在一般情况下,使用全局静态类确实不是一个好习惯,但这可能仍然适用于您的特定场景。
相关问题
- 1. 跨多个请求的静态变量
- 2. 跨多个文件共享变量
- 3. Tomcat:跨会话共享静态变量和方法。
- 4. 跨多个不同子类的静态变量 - 已更正
- 5. 静态方法内部变量共享
- 6. 跨多个线程的可变静态变量
- 7. 在多线程中共享数据 - 是非静态变量吗?
- 8. HttpModule和静态类,做多个请求共享相同的静态数据?
- 9. 如何防止在继承类中共享静态变量?
- 10. 共享库/ dll中的全局变量,跨进程共享
- 11. 跨多个NSMenus共享NSMenuItem
- 12. 共享变量的多个ScriptControl实例
- 13. 共享(静态)类与C#的活动
- 14. 跨越多个.php页面的PHP静态变量
- 15. 在文件中共享的Python中的静态变量
- 16. 跨多个服务器/应用程序共享全局变量
- 17. 两个不同的类库共享一个静态类库
- 18. 在Python中的多个进程中共享一个类变量
- 19. 全局静态变量或共享偏好的Android
- 20. 共享进程和DLL之间的全局/静态变量
- 21. C++静态库中的共享全局变量:Linux
- 22. 如何防止.NET运行时中的静态变量共享?
- 23. 访问隐藏的共享/静态变量
- 24. 共享库加载的静态变量损坏
- 25. OSX,静态变量共享相同的地址
- 26. 跨多个DataGrid的共享DataGridColumn宽度
- 27. 跨多个进程的共享队列
- 28. tensorflow多GPU共享变量
- 29. 传递一个私有变量的公共静态变量C#
- 30. 链接一个共享库静态到我的共享库
'这是一个好习惯吗?不,但您可以使用依赖注入并在应用程序之间共享一个实例。那会更理想。为什么要避免通过构造函数传递 – Jonesopolis
如果您遵循适当的MVVM模型,那么不同的窗口将共享相同的数据上下文,因此不需要静态方法 – MikeT
所有窗口不一定共享相同的DataContext。这是否意味着您的所有窗口/视图都有一个巨型视图模型? – mm8