C# 在C语言中,接口和其他依赖项应该放在哪里?
我所说的其他依赖性是指抽象类和其他任何东西 我有一个C# 在C语言中,接口和其他依赖项应该放在哪里?,c#,interface,C#,Interface,我所说的其他依赖性是指抽象类和其他任何东西 我有一个dll形式的项目,它需要一个特定的接口,IInput。测试项目也需要此接口,因此我将此接口放置在主项目中,而主项目又是一个单独的exe程序集 这是因为当我将所有东西连接在一起时,最终主项目将需要使用这个接口。现在我遇到的问题是,当我试图在主项目中添加一个对dll的引用时,我收到了一个循环依赖项 我以前从未遇到过这个问题,也不知道最好的解决方法。作为一个临时修复,我已经将接口移动到单独的dll中,但很快我将在主项目中需要它,所以我回到了第一步 编
dll
形式的项目,它需要一个特定的接口
,IInput
。测试项目也需要此接口,因此我将此接口放置在主项目中,而主项目又是一个单独的exe程序集
这是因为当我将所有东西连接在一起时,最终主项目将需要使用这个接口。现在我遇到的问题是,当我试图在主项目中添加一个对dll的引用时,我收到了一个循环依赖项
我以前从未遇到过这个问题,也不知道最好的解决方法。作为一个临时修复,我已经将接口移动到单独的dll中,但很快我将在主项目中需要它,所以我回到了第一步
编辑:
我应该提到设计的,所以就这样
Menu
Menu Tests
Runner
菜单有IInput,它实际上是第三方库的接口适配器,以便进行单元测试
所以菜单需要这个输入,但是跑步者也需要。运行程序项目(exe)将需要输入,因此我需要再次输入。由于接口不应与测试项目或主项目有任何关联,只需将其移动到单独的程序集,并从测试和主项目引用此程序集即可
MySolution
|->Interfaces.dll
|->MainProject.exe (references Interfaces.dll)
|->TestProject.exe (references Interfaces.dll)
为什么不这样设置结构:
Solution
+ Project With Interface
- IInput
+ Main Project/UI
-> Reference "Project With Interface"
+ Test Project
-> Reference "Project With Interface"
没有循环引用,而且在引用用法上非常直截了当 循环依赖项表示您的设计存在问题。接口应该放在其定义所属的任何地方。如果您有两个相互依赖的项目,它们可能属于一个项目,或者(更有可能)——如果您的dll是主项目使用的“真实”库,则将接口放入dll中
我这样说是因为我假设“dll”是指“类库”。如果你字面上指的是一个编译后的dll,你不能对其进行修改,那么就把接口放在一个新的库中。我认为接口应该在dll中,主项目应该引用dll,并且有一个实现接口的适配器类。我想,测试项目将引用主项目和dll。我不认为这个问题只与接口有关。它也可以是一个抽象类或其他东西。听起来您的总体架构似乎有问题 但是,要解决这个问题,只需创建一个包含接口的新类库,其他三个项目可以引用它
/克劳斯(Klaus)我就是这么想的,但我从来没有听说过只针对几个接口的单一组件。我倾向于使用“BusinessEntities”项目,并将任何接口保留在那里,无论是针对几个接口还是大量接口。效果很好。