2016-03-03 84 views
-2

我正在學習軟件開發中的不同層次,比如表示層,邏輯層等等。Visual Studio C# - 層級分離

所以我有這個RaceTrackSimulator項目,這是一個Windows窗體應用程序。我想所有的類(邏輯)從GUI(演示文稿)分離,我這樣做是這樣的:

The Project Solution in Visual Studio

但現在的問題是,我不知道如何讓類訪問並修改GUI的組件,如文本框和標籤。我認爲這只是一個簡單的命名空間的問題,但由於每個類,它說,沒有任何意義:

namespace RaceTrackSimulator.BusinessLogic 

如何解決這樣的問題?

謝謝!

+1

你的意思是你不能從窗體訪問類,或者不能從類訪問窗體? – stuartd

+1

如果您只是將表示邏輯的代碼複製到單獨的文件中,但仍然需要修改GUI組件,那麼您還沒有將業務邏輯從表示邏輯中分離出來! – mellamokb

回答

0

有幾件事情可以不看實際的代碼。因爲它們位於不同的文件夾中,所以命名空間與您的Form相比將不同於3個類。

還要確保在窗體設計器的屬性選項卡上將組件可見性級別設置爲「公共」。一旦他們公開,你應該能夠在你創建的三個類中的任何一箇中訪問它們。

2

您剛將業務層類分開放置在單獨的文件夾中,這實際上並不完全符合單獨的層次。您應該將所有這些類都放在單獨的項目中(例如,類庫項目),並將該類庫的dll使用到您的表示層表單應用程序中。

您可以選擇將業務層編寫爲WCF服務並進行部署。反過來,您的客戶/表示層將使用該服務,然後訪問業務層;這對於所有不同的客戶端(用戶界面或其他用戶)來說都是一種好的方法,因此您不必專門運送dll。

在您的具體情況中,問題可能是名稱空間不同,並且在這種情況下請確保您正在導入正確的名稱空間。

0

你把

using RaceTrackSimulator.BusinessLogic; 

,在您所引用的對象文件的頂部?

0

您的代碼駐留在名稱空間的位置是無關緊要的。你做得很好。您所需要做的就是提供一種從業務邏輯類訪問組件的方法。根據您的要求,有很多方法可以做到這一點。你可以在你的表單中提供一個post(Object state)方法,並實例化你的邏輯類傳遞對錶單對象的引用。然後,您的業務邏輯可以簡單地將任何喜歡的東西發佈回表單,然後根據從邏輯層接收到的數據/消息來處理UI邏輯。或者你可以讓你的組件更多的公開可見的邏輯層。或者您提供了一個允許直接訪問組件的界面。

此外,您在上面的示例中稱爲業務邏輯並非真正的邏輯。它的外觀就是商業模式課程。