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