我正在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