2010-10-18 33 views
1

我有兩個項目; A和B,其中B需要使用一些類,在項目A.因此,我加入B到A的解決方案,並在B I增加了一個參考項目A.類庫還是不是?

那是合理的?還是應該將這些課程放在課程庫中?

我看到,如果我還希望在項目中的一個菜單選項,打開窗體/ B方案,那麼A需要B的引用。這將是不可能當B已經不得不A.參考然而,如果我使用公共類的類庫,那麼就可以,因爲B不需要A引用。

這聽起來合乎邏輯嗎?很高興知道將項目放在同一解決方案中的典型原因是什麼,如果建議使用庫來積極地重構兩個項目之間的通用代碼,即使它只是幾個類也是很好的。但是我從來沒有做過我自己的圖書館,所以有時不確定何時使用它。如果你有一定的原則將是很好聽..

回答

1

通常,類裏面庫被用於多個項目之間的共同功能。換句話說,你正在處理的是什麼。所以你應該把它放到一個類庫中。

從那裏,有兩種可能性:如果兩個項目之間的共同功能總是相同,那麼它應該是一個單獨的項目。如果可以更改爲一個而不是另一個,則將其複製到兩個項目中。你仍然應該把它重構成一個類庫,因爲這會使它最初更容易。還要注意的是,在第一種情況下,將會有另一個項目需要維護,因爲它的發佈時間表和管理難題令人頭痛。

通常,單個解決方案中的多個項目是用戶界面和各種庫以及其他支持項目。如果存在多個用戶界面,則通常將它們實現爲同一個系統,例如用戶界面和管理界面,或者可能用於不同平臺的界面。

+0

我明白了。現在的情況是,一個程序需要將一個對象傳遞給另一個程序,無論是在運行時還是序列化爲一個可以由另一個加載的文件。所以看來,這個對象類必須在單獨的項目/ DLL的圖書館......如果我理解正確。 – bretddog 2010-10-18 17:21:12

3

聽起來像一個完美的用例類庫給我。

把常用功能在第三類庫項目,並有A和B參考這一點。

0

原則上,循環依賴,這樣才能避免這樣是的,它將使意義創建一個類庫並添加引用到代替。

0

一個類庫,將是一個很好的解決方案,特別是如果你打算在具有以往任何時候都引用B.

如果需要A(或B)實際實現這些功能類的功能,你可能會考慮創建一個帶有對象接口的類庫,因此A和B可以在自己實現的接口下來回傳遞對象。

2

如果你計劃在兩個項目使用相同的類,共享庫是要走的路。這不僅僅是方便。具有相同名稱,名稱空間和成員的兩個相同的類如果在不同的程序集中定義(包括EXE),則它們被視爲完全不同的類型。將公用類移入類庫C,並在A和B中引用C.衆所周知的指導校長是乾的:不要重複自己。

-Oisin

+0

「不同的類型」,這是否意味着即使兩個類在兩個單獨的項目中是相同的,它們也不能成功序列化/去序列化? – bretddog 2010-10-18 17:02:55

+0

@ bretddog:正確。類型標識由其強名稱(如果程序集已簽名),程序集本身,程序集版本以及類名稱空間+名稱組成。 – x0n 2010-10-18 17:07:01