C#:接口实现结构和覆盖

时间:2012-07-26 10:08:29

标签: c# inheritance interface override

我有一个具有这种结构的C#解决方案:

  • 项目1:包含Dao(可以包含多个)
  • 项目2:包含一个界面(仅一个)
  • 项目3:具有自己的界面的

  • 项目1中的dao实现了项目2中的接口。

  • 项目3中的wcf服务接口实现/继承/进入项目2中的接口。

我遇到的问题是需要项目2中的接口来描述我的dao类。需要使用wcf接口来描述项目3中我的wcf服务中可用的功能。除了wcf接口上的wcf属性之外,两个接口完全相同,因为dao中的所有函数都需要通过wcf服务文件也是。可以更改/替换实现或者更确切地说dao类,但必须始终遵循相同的结构,因此需要接口。现在,当我尝试在我的wcf接口中实现它时,这两个接口是相同的,我被告知我必须有效地覆盖我从中派生出的接口中的所有方法。这是正确的做法吗? wcf接口需要实现项目2的接口,以便它提供dao所需的所有功能(全部都是这样)。

之前我的项目设置如下:

  • 项目1:包含dao
  • 项目2:包含与wcf的接口 属性以及
  • 项目3:不包含任何界面,只包含wcf 服务

dao和wcf服务都实现了来自项目2的相同接口。在使用dao时,接口上的wcf属性是否会产生任何不利影响?我可能遇到的一个问题是wcf接口最终可能有基本接口没有的额外功能,所以我认为这个先前的结构会出错。说实话,我不知道。

我知道我可能没有非常清楚地解释它,实际上涉及到两个甚至三个问题,但这是最好的解决方法。我想我的三个主要问题如下:

  1. 哪种继承/实现结构最好?为什么?
  2. 实现wcf服务使用的相同接口 普通类有任何不良影响(由wcf属性引起,即[ServiceContract],[OperationContract])。
  3. 会覆盖基接口提供的所有方法 正确的吗?

1 个答案:

答案 0 :(得分:0)

您首先定义的结构很好,您有一个实现接口的接口,子接口可以添加不在基础中的新方法。但是,您不需要在子接口中定义基本方法,因为它们都是继承的,所以现在您的子接口将为空。在此模型中,子接口可以具有WCF属性。

现在,您是否必须在WCF服务中实现所有这些方法?很简单,因为这就是接口的作用 - 它们定义了必须实现的合同。