建立代码合同?

我有以下方法:

private void DoSomething(CoolClass coolClass) { if (coolClass == null) { throw new ArgumentNullException("coolClass"); } coolClass.Name = "Pepe"; } 

使用代码契约,我们可以这样写:

 private void DoSomething(CoolClass coolClass) { Contract.Requires(coolClass != null, "IS NULLL!"); coolClass.Name = "Pepe"; } 

第二种方法更短更简单。 我遇到的问题是,当你构建它时,在运行时它不会抛出exception,它显示了这个:

说明:必须使用代码契约二进制重写器(CCRewrite)重写程序集(可能是“CodeContractsTest”),因为它正在调用Contract.Requires并且定义了CONTRACTS_FULL符号。 从项目中删除CONTRACTS_FULL符号的任何显式定义并重建。 CCRewrite可以从http://go.microsoft.com/fwlink/?LinkID=169180下载。 安装重写器后,可以从“代码约定”窗格上项目的“属性”页面在Visual Studio中启用它。 确保启用“执行运行时合同检查”,这将定义CONTRACTS_FULL。

除非使用VS,否则请从此处下载.net的CodeContracts。

然后检查项目中的“运行时检查”,以便在运行时构建它时,抛出exception。

我们的应用程序是使用Jenkins和PowerShell脚本构建的。 有没有办法检查运行时并抛出exception,使用简单的命令或属性,或简单的东西?

如果您喜欢简单,为什么不编写自己的方法版本呢?

 public class CustomContract { public static void Requires( bool Predicate, string Message ) where TException : Exception, new() { if ( !Predicate ) { Debug.WriteLine( Message ); throw new TException(); } } } 

使用代码契约只是为了拥有一个友好的API听起来像用大炮射击麻雀。

通过更改以下项目属性,我可以在运行时消除此exception。

右键单击项目 – >属性 – >代码合同(Tab)将组装模式更改为“标准合同要求”也选择复选框 – 执行运行时合同检查