當然。在Visual Studio中的解決方案中,您可以添加一個類庫項目並將其填入所需的所有可重用代碼。然後,解決方案中的任何項目都可以通過向該項目添加項目引用來引用它。
請注意,這樣的事情很容易出問題。舉個例子,你的例子:
MessageBox.Show("Hi");
MessageBox
類緊密耦合到用戶界面。所以它屬於的用戶界面對象。 (這種情況下的形式)。這是因爲如果你嘗試在類庫中使用它,那麼你需要將用戶界面庫添加到該類庫中,從而使它與該特定的用戶界面實現更加緊密地結合。這使得類庫的便攜性更低,並且可重用性更低,因爲它可以用只有被相同用戶界面技術的項目使用。 (例如,Web項目無法使用。)
因此,您需要考慮將每個常用工具封裝到自己的可重用代碼中。它是否屬於用戶界面,業務對象,數據訪問等?如果它與特定的外圍技術(用戶界面技術,數據訪問技術等)緊密結合,那麼它可能屬於那裏。
一種方法是擁有多個「通用工具」庫。使用人爲的命名方案,大型企業域解決方案可能有項目是這樣的:
- Domain.BusinessLogic(類庫,通過一切引用)
- Application.Forms.AdminPanel(窗體應用程序)
- 應用.Forms.OperationsPanel(表單應用程序)
- Application.Forms.Common(類庫,由其他Forms應用程序引用)
- Application.Web。PublicWebsite(Web應用程序)
- Application.Web.Common(類庫,其他Web應用程序中引用)
- Infrastructure.DataAccess.SQLServer(類庫,依賴注入到域)
- Infrastructure.Vendor.SomeService (類庫,依賴注入到域)
- 等
所以,你有一個核心業務邏輯的項目,其中包含任何的普遍到您正在使用的所有業務領域。它應該有沒有依賴關係。 (不依賴於用戶界面,數據庫,框架等)然後你有各種技術的應用程序,其中混合類庫具有應用程序耦合的通用功能。最後你還有域的其他外圍,即後端依賴。這些可能是您的數據訪問層,與第三方系統和服務的集成等。
由於任何給定的功能都被抽象爲一個通用工具來減少重複和增加重複使用,請注意保持代碼 - 低耦合,所以「常用工具」不緊密地束縛於「不常見的依賴」。業界經常會發現與代碼重用的緊密耦合增加。 (請參閱Single Responsibility Principle。)因此,請謹慎行事以避免發生。
如果它服務於多個責任並且不應該混合這些責任,那麼編寫同一段代碼(單獨由按鍵代替「不變」,不一定以概念爲目的)不會有一次固有錯誤。
但是,靜態方法屬於一個組或創建一個新的文件,在C#項目解決方案? – 2013-04-24 22:49:50
@NicholasMordecai你可以創建一個新文件,雖然沒有什麼能夠阻止你將多個類放入一個單獨的文件中,並且對於小而緊密相關的類在單個文件中是相當常見的做法(在c/C++中定義更是如此) 。 – evanmcdonnal 2013-04-24 22:52:15
如果需要,可以將靜態方法添加到現有類中,這取決於它是否適合該類。至於新的靜態類 - 你有權將它放在現有的文件或新的文件中 - 編譯器不關心,只要這個類的命名空間可以訪問調用者。 – 2013-04-24 22:53:26