0

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

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

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

4

2 回答 2

0

我写的一些代码也有同样的问题,虽然规模不一样。我的解决方案是使用 IDE/ReSharperNotImplementedException为新方法添加存根或将它们写为abstract override. 基类中定义的所有合约此时都应该是一成不变的,因为例如,如果您尝试Contract.Requires在合约类中添加它们, CC 工具就会对您大喊大叫IY

于 2013-08-22T18:47:10.333 回答
0

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

于 2013-08-16T07:38:58.407 回答