我有以下方法:
private void DoSomething(CoolClass coolClass)
{
if (coolClass == null)
{
throw new ArgumentNullException("coolClass");
}
coolClass.Name = "Pepe";
}
使用代码契约,我们可以这样写:
private void DoSomething(CoolClass coolClass)
{
Contract.Requires<ArgumentNullException>(coolClass != null, "IS NULLL!");
coolClass.Name = "Pepe";
}
第二种方法更短更简单。我遇到的问题是,当您构建它时,在运行时它不会抛出异常,它会显示:
描述:必须使用代码协定二进制重写器 (CCRewrite) 重写程序集(可能是“CodeContractsTest”),因为它正在调用 Contract.Requires 并且定义了 CONTRACTS_FULL 符号。从项目中删除任何显式定义的 CONTRACTS_FULL 符号并重新构建。CCRewrite 可以从http://go.microsoft.com/fwlink/?LinkID=169180下载。安装重写器后,可以在 Visual Studio 中从代码合同窗格上的项目属性页面启用它。确保启用“执行运行时合同检查”,这将定义 CONTRACTS_FULL。
除非您使用 VS 从此处下载 .net 的 CodeContracts 。
然后你检查项目中的“运行时检查”,这样当你在运行时构建它时,就会抛出异常。
我们的应用程序是使用 Jenkins 和 PowerShell 脚本构建的。有什么方法可以通过简单的命令或属性或简单的方式检查运行时并引发异常?