避免在接口合同类中重复

时间:2013-08-15 16:00:07

标签: c# dry code-contracts

我们希望在接口上使用代码合约。我们有一个大的接口层次结构,导致合同类中的大量重复。

我们有一个接口IX(通过继承其他接口)有大约50个方法。有几个接口派生自IX。接口IY继承自IX,只添加了几种方法。如果我想为IY添加合同类,我需要引用所有50多种方法。更糟糕的是,如果稍后我决定修改IX,我必须更改从IX继承的所有接口的所有合同类。这不鼓励开发人员进行更改。

有没有办法避免这种重复?

2 个答案:

答案 0 :(得分:0)

我不相信这是可能的,不。您不能从另一个派生接口契约类,并且接口契约类不能具有除System.Object之外的任何基类。所以我觉得你被困了。你最好的方式可能涉及某种代码生成工具,或许多复制和粘贴。

答案 1 :(得分:0)

我在编写的代码中遇到了同样的问题,尽管不是完全相同。我的解决方案是使用IDE / ReSharper为新方法添加NotImplementedException存根或将其写为abstract override。如果您尝试在Contract.Requires的合同类中向IY添加{{1}},那么基类中定义的所有合同都应该在此处一致,因为CC工具会对您大喊大叫。