2013-09-27 64 views
0

我確實有以下場景: 我有一個shell和兩個模塊(moduleA.dll,moduleB.dll通過bootstrapper包含),我使用PRISM4創建的。複合WPF GUI共享SerialPort(PRISM/MEF)

ModuleA讀取數據庫,並從該信息中打開串口。該模塊還提供通過串行連接發送命令。

ModuleB也可以發送數據到同一個串行連接,模塊A已經打開。此外,moduleB應該包含繪製來自串行端口的數據的圖。

如: ModuleA發送 「設定1,設定2」 ModuleB發出 「開始」 - > ModuleB接收數據( - >劇情數據) ModuleB發出 「停止」

所以我理解他們應該以某種方式共享這個串口實例。任何想法如何設置這種情況?

在此先感謝。

回答

1

你最初的模塊/類設置看起來不對。模塊的概念主要用於可插拔的可選功能,而不是你在這裏描述的內容:看起來ModuleB不能沒有ModuleA存在(因爲它需要端口A有,並且可能需要首先發送設置等)只有ModuleA沒有ModuleB的-versa也沒有意義(只發送設置但沒有數據通信)。

如果您的設置非常簡單,只需使用單個模塊進行所有串口通信。那麼你可以做什麼,將數據庫抽象成一個單獨的模塊,最後也是繪圖。然後,如果您切換到另一個數據庫,則只需提供一個新模塊。同樣的情節。 (注意,這僅僅是你可以做的一個例子,絕不意味着這是針對你的特定問題的解決方案)。對於'抽象'部分,您使用MEF/Unity的依賴注入:在一個公共項目中創建接口,將接口的實現導出到模塊中,並將其導入另一個模塊。

+0

+1首先,感謝您的快速和有益的迴應。我現在看到,我的模塊的構建不是最好的選擇。 – user2799180

+0

stijn我還有一個問題。你能舉個例子嗎?我是棱鏡新手,如果moduleA中的數據立即更新,我找不到更新moduleB中數據的示例。 – user2799180

+0

你應該更具體,並且可能會爲此創建一個單獨的問題。然而,這裏的原則是佈置在這裏:http://stackoverflow.com/questions/18530203/how-to-create-an-instance-of-a-class-of-another-module-without-adding-reference/18530815# 18530815 – stijn