2012-09-21 37 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项目中声明它,这将是从一个参照点罚款。

您也可以将它放置在它自己的接口项目中,这将使您能够单独引用接口,例如测试项目。