2012-09-21 38 views
2

假設在C#(或具有抽象接口)的程序,其中第一部分(A)和第二部分(B)依賴於第三部分(C)。例如,假設與在類ClassA項目A和ClassB B工程項目C.取決於ClassC例如三個項目的Visual Studio解決方案,我想接口和實現分離,所以我創建界面IClassCClassAClassB使用。我應該在哪個項目中聲明接口IClassC用於聲明接口的地方

回答

1

大多數情況下,它將在項目C中,但是如果您想要組裝是可插入式的,那麼意味着您可以更改接口C的實現。並且您不想重新構建項目A和B每次當您更改項目C中的代碼時。

在這種情況下,您需要將DIP principle應用於反向依賴關係,因此接口C應該位於新項目調用IC中。當你用C代碼更改或使用C替換C

C -> IC 
A -> IC 
B -> IC 

所以用這種方式」,它也不會影響到A和B.

:相關性將改變:

A -> C 
B -> C 

1

在項目C,或單獨的接口工程項目我

2

這聽起來像項目C不依賴於項目A或項目B,但顯然需要了解的接口(以便類可以實現它)。因此它已將置於ProjectC或每個項目所依賴的其他項目中。 (您可能有一個單獨的項目只是爲接口,但我很少發現,是有用的。)

0

您可以在ClassC項目中聲明它,這將是從一個參照點罰款。

您也可以將它放置在它自己的接口項目中,這將使您能夠單獨引用接口,例如測試項目。