我可以开始使用CodeContracts而不是:

if (XXX == Y)
    throw new ArgumentException("bla bla");

如果我开发了一个库并且我的库用户不使用CodeContracts,它如何工作?

最佳答案

假设使用代码协定的代码是通过二进制重写器运行的,它将引发异常,例如您发布的代码。重写器检查代码,并用参数检查等替换合同代码。这有点像面向方面的编程。编译后,它将为您注入代码以处理各种情况。

如果他们不使用代码合同,那么他们将无法获得执行旨在查看合同并警告他们的静态分析的好处,这些分析可能会基于合同及其代码而产生错误。

Code Contracts

关于.net - CodeContracts是否应该替换常规的ArgumentException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4490857/

10-16 09:05