在C#解决方案中组织接口?

时间:2018-07-20 03:31:27

标签: c# .net software-design

一段时间以来,我一直对如何组织解决方案的最佳方法感到困惑。后来,我在这方面学到了很多知识,现在我创建了多个项目,以根据其用途将项目分开。

项目

  • AppName
  • AppName.API
  • AppName.Core
  • AppName.Common

现在,如果API项目包含我项目的所有接口,这是否意味着每个类都必须具有一个接口,或者这是最佳实践?似乎几乎不可能将所有接口放入AppName.API而不用任何方式交叉包含AppNameAppName.APIAppName以外的其他项目,这是要这样做吗?这样,除了接口之外,什么都不会暴露给API?

让我们说我有一个类CarCar必须实现ICar,如果这个ICar需要访问Car需要的另一个类怎么办?要添加但其AppName中的内容,AppName已经引用AppName.API来包含ICar,这是否意味着我需要类Car或更正确的接口{ {1}}需要吗?

希望我的上述说法是有道理的。

我不确定这是否应该做,但是我感觉错了,或者我只是错过了一个很大的难题。这是正确的方法吗?我是唯一这样做的人吗?我莫名其妙地感到孤独。

如果有人能详细说明这一点并给我一些知识,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

这主要是一个根据用户的意见吸引答案的问题。在我的项目中,我通常将名称保存为“ AppName.ServiceName.Abstracts”。

答案 1 :(得分:0)

将接口分开是一个好习惯,但是您需要意识到接口是一种契约。消费者与执行方之间的合同。因此,接口上定义的任何传入或传出参数都是该合同的一部分。因此,将这些参数对象和相关接口捆绑在一个程序集中是有意义的。如果将它们放在单独的程序集中,则最终需要同时引用两者。

需要牢记的另一点是,接口为软件设计人员提供了逆转依赖关系(并提高可测试性)的能力,因为使用任何工具时都应谨慎使用它,而不必假定您必须连接创建的每个类。

最后,在分层软件设计中,将实体从一层映射到另一层并不少见。这是因为将层之间的依赖性降到最低。