接口和其他依赖项应该放在哪里?

Fin*_*las 0 c# interface

通过其他依赖,我的意思是抽象类,以及其他任何东西.

我有一个形式的一个项目dll,其需要一定的interface,IInput.测试项目也需要这个接口,所以我将这个接口放在我的主项目中,而后者又是一个单独的exe程序集.

这是因为当我将所有内容连接在一起时,最终主项目将需要使用此接口.现在我遇到的问题是当我尝试将主项目中的引用添加到dll时引用了主项目我收到了循环依赖.

我以前从未遇到过这个问题,也不知道对付它的最佳方法.作为一个临时修复我已经将界面移动到单独的dll,但很快我将在主项目中需要它,所以我回到了第一个方块.

编辑:

我应该提到设计,所以这里.

Menu
Menu Tests
Runner
Run Code Online (Sandbox Code Playgroud)

菜单具有IInput,它实际上是第三方库的接口适配器,以便进行单元测试.

所以菜单需要输入,但跑步者也是如此.转轮项目(exe)将需要输入,所以我将再次需要IInput.

Yan*_*ton 6

由于界面不应与测试项目或主项目有任何联系,只需将其移动到单独的程序集,并从test和main引用此程序集.

MySolution
 |->Interfaces.dll
 |->MainProject.exe (references Interfaces.dll)
 |->TestProject.exe (references Interfaces.dll)
Run Code Online (Sandbox Code Playgroud)