2009-11-27 92 views
1

我是新來的將我的應用程序分解爲多個解決方案(換句話說,我剛剛進入真實世界),我有一種情況,我完全將邏輯從把UI變成一個單獨的項目。我跌倒的地方是我的膠水代碼。使用C#中引用的項目引用的類型

作爲一個簡單的例子。

工程車引用內藏門,無線電等

項目庫引用項目汽車項目,但需要使用無線電。

我是否需要在車庫項目中添加對無線電項目的引用?

回答

3

是的,您需要添加對這兩個庫的引用。一般來說,您需要添加一個對所有聲明類型的庫的引用,直接使用;通過聲明這些類型的變量,從他們那裏繼承,使用具有類型作爲參數或返回類型的方法,等等。

3

取決於是否與否,車庫內,你是直接在項目中定義的引用類型無線電。如果你是,那麼你需要創建一個參考。如果你正在這些無線電類型的唯一用途是在汽車大會,該車類型是在車庫中使用的事實並要求你申報車庫電臺參考,(除提到的在下面的編輯注)。編輯(基於來自@Pavel的評論):還有一個其他場景/情況需要引用另一個程序集: 如果您使用的是從某個類型派生的引用程序集的類型(或實現了接口)在第三個程序集中定義,則還需要引用該第三個程序集。

+1

「車庫中使用車型的事實並不要求您在車庫中聲明對廣播的引用」......除非類型'Radio'用於基類列表或實現'Car'中_any_公共類型的接口列表。 – 2009-11-27 21:10:57

+1

@Pavel,我會檢查這個以確保,但是如果你實際上沒有使用基類列表/實現的接口類型IN Garage,則不需要引用它。如果唯一的參考是在Car中,那麼這是唯一需要參考的地方。 – 2009-11-27 21:16:06

+1

@Charles,我已經檢查過了,看起來你是對的 - 如果你使用'Car'中的Derived',並且'Derived'繼承'Radio'中的'Base',那麼你必須引用'無線電「(即使你不使用它的任何成員),否則它是有效的。我很確定有一個明確的規則可以覆蓋這個規範,無論是在ECMA CLI規範還是C#規範 - 我試圖找到確切的措辭。 – 2009-11-27 21:52:12

0

你可能會考慮跳躍水平是否真的是你想要做的。在許多情況下,車庫要求汽車拒絕那些該死的噪音,而不是直接訪問收音機更好。

這只是取決於您的系統的意義。

如果車庫不需要直接觸摸收音機,那麼車庫參考車輛和車輛參考收音機的事實並不意味着車庫需要參考收音機。

但是,如果車庫確實需要弄亂它,那麼它將需要一個參考。

請注意,跳過層往往表明抽象或體系結構存在問題。 (雖然跳過層可能不是在這種情況下發生的事情)。