[英]c# Best way to communicate between classes
現在我正在編寫一個應用程序,並且我認為必須有一個更好的解決方案來解決我現在正在做的事情。
我有一個主窗口,它將處理程序的設置。 然后我有更多的課程和窗口。 例如,語言處理程序類和處理“main函數”所需的用戶輸入的表單。
但是,到現在為止,我總是必須將主窗口傳遞給每個類,因為語言處理程序應該能夠更改主窗口的字符串。 另一種形式也應該能夠將數據傳遞給主窗口。
如果我們想象會有更多的類,並且每個類都需要主窗口的副本,這將消耗大量資源,具體取決於主窗口的“大小”。
那么,這些類之間是否有更好/更有效的通信方式。
另一種選擇是將您的類視為服務。 將它們編碼到接口,然后使用依賴注入 (也稱為控制反轉)來構建對象圖(您告訴IoC容器您想要一個frmSomething
,它將確定它需要哪些服務/類並適當地實例化它們)。
這意味着:
OldTranslator
為NewTranslator
,只要它們都符合相同的接口,除了容器的配置之外不需要更改任何內容) 看看Unity支持的MS支持的DI容器。 溫莎城堡是一個受歡迎的選擇,但還有更多
值得注意的是,正如你所說的那樣傳遞主窗口的“復制”並不是一件壞事 - 你只是將一個引用(實際上是一個指針 )傳遞給主窗口(因為任何比真實更復雜的東西)原語是引用類型)。 這意味着任何開銷都很小
除了IVAN給出的ans之外...如果我們在沒有所有這些術語的情況下查看更高級別的視圖,那么你應該創建一個靜態類,它將作為InMemoryStorage服務器並在其上定義字段以保存信息
這就是您將完全控制共享內容以及多個組件可以更改它的內容
此外,您可以定義getter和setter,並在更改屬性時引發事件,以便不同的窗體或窗口(視圖)可以訂閱更改並相應地執行操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.