C#:WCF接口实现另一个接口以公开方法
我有另一个问题与此有关,所以请阅读它,如果你需要任何进一步的细节。这是一个与另一个问题的一个要素有关的更具体的问题。我有一个描述dao的接口。此接口由另一个接口实现,该接口将是wcf服务的接口。原因是父接口中的所有函数都需要通过wcf接口公开。父接口不包含wcf属性,因为它不需要这些属性。子接口需要wcf属性才能用作wcf接口。wcf接口最终可能包含更多不在父接口中的方法。有两种方法可以在子接口上获得这些属性,如下所示:C#:WCF接口实现另一个接口以公开方法,c#,interface,C#,Interface,我有另一个问题与此有关,所以请阅读它,如果你需要任何进一步的细节。这是一个与另一个问题的一个要素有关的更具体的问题。我有一个描述dao的接口。此接口由另一个接口实现,该接口将是wcf服务的接口。原因是父接口中的所有函数都需要通过wcf接口公开。父接口不包含wcf属性,因为它不需要这些属性。子接口需要wcf属性才能用作wcf接口。wcf接口最终可能包含更多不在父接口中的方法。有两种方法可以在子接口上获得这些属性,如下所示: 用属性装饰父接口方法 在子接口中重写父接口中的所有方法,然后用属性装饰这些
解决方案2是个好主意吗?简单地覆盖所有的方法,用wcf属性装饰它们,似乎会适得其反 我认为你的解决方案是更好的 这看起来可能适得其反,但实际上是合乎逻辑的:您有一个与某些方法的接口,这些方法执行某些任务,并且您在其上添加了另一个“层”,它以您需要的任何方式公开它们 这样,如果您不想再通过WCF公开这些方法,而是想让它成为一个RIA服务,或者想用一个假客户端替换它,那么您只需切换“上层”层并更改覆盖即可。底层的实际接口甚至不需要知道这一点
这一切都需要将“线路”(父界面)连接到正确的“显示器”(子界面)上。我认为您的解决方案#2更好 这看起来可能适得其反,但实际上是合乎逻辑的:您有一个与某些方法的接口,这些方法执行某些任务,并且您在其上添加了另一个“层”,它以您需要的任何方式公开它们 这样,如果您不想再通过WCF公开这些方法,而是想让它成为一个RIA服务,或者想用一个假客户端替换它,那么您只需切换“上层”层并更改覆盖即可。底层的实际接口甚至不需要知道这一点
这一切都需要将“电线”(父界面)连接到正确的“显示器”(子界面)上。旁注:我对这种设计有点担心;它混合了内部依赖和外部依赖。你对设计有把握吗?对基接口、内部接口的任何更改都将强制在子接口、公共接口上进行。这就是你想要/需要的吗?我不会将属性添加到基本接口,因为它们在那里没有功能。老实说,我不确定接口继承设计,但是dao中包含的所有公共功能都需要通过wcf服务公开,这意味着两个接口是相同的。您是否建议完全忘记继承并将它们视为独立的实体(尽管它们如此相似)是一个更好的主意?wcf接口可能最终与dao接口不同,因为它可能包含更多的函数。我认为通过使用继承,我可以强制wcf接口确保它公开所有的公共dao功能。另外,如果你认为设计是错误的,那么请务必告诉我,因为我想听他们。我的另一个问题可能有助于您理解我的解决方案的结构。在一般服务中,要么公开服务类型的API:做大量工作并操作大型数据集的操作,要么公开资源类型的API:例如RESTFul API。在这两种情况下,我都希望这些操作独立于底层技术。内部接口可能包含特定于技术的参数和类型;我希望这些服务是免费的。旁注:我会有点担心这个设计;它混合了内部依赖和外部依赖。你对设计有把握吗?对基接口、内部接口的任何更改都将强制在子接口、公共接口上进行。这就是你想要/需要的吗?我不会将属性添加到基本接口,因为它们在那里没有功能。老实说,我不确定接口继承设计,但是dao中包含的所有公共功能都需要通过wcf服务公开,这意味着两个接口是相同的。您是否建议完全忘记继承并将它们视为独立的实体(尽管它们如此相似)是一个更好的主意?wcf接口可能最终与dao接口不同,因为它可能包含更多的函数。我认为通过使用继承,我可以强制wcf接口确保它公开所有的公共dao功能。另外,如果你认为设计是错误的,那么请务必告诉我,因为我想听他们。我的另一个问题可能有助于您理解我的解决方案的结构。在一般服务中,要么公开服务类型的API:做大量工作并操作大型数据集的操作,要么公开资源类型的API:例如RESTFul API。在这两种情况下,我都希望这些操作独立于底层技术。内部接口可能包含特定于技术的参数和类型;我希望这些服务是免费的。谢谢。这是一个很好的解释。所以,请保持它的原样