是否有代码合同的替代方案来声明编码假设?

Is there an alternative to Code Contracts for declaring coding assumptions?

我使用代码合同。我喜欢代码合同。然而,Code Contracts for C# 远非完美。大多数与它们相关的问题我都能够通过政策来回避或软化。仍然......其中有几个部分让我感到畏缩(例如,必须为抽象实现 ContractClasses)。

我发现的唯一真正的替代方案是一个不比 CC 好多少的开源库,并使用常规守卫(这可能违反 LSP)。

还有我错过的更好的选择吗?我问不是出于绝望,而是为了了解我所有的选择。

我不知道您目前有任何替代选择。

但是,有a discussion on the Roslyn repository on GitHub about bringing language-level support for code contracts in C#. The issue has been deemed as being of some interest (though not strong interest) for inclusion in the feature set of C# 7

关于 LSP 的主题,在那个特定的讨论中没有提到它。例如,没有提到在专门化虚拟方法时加强后置条件和弱化前置条件的可能性。