你好
我有一个关于 CodeContracts 的小问题。我有一个类库项目,它作为一个带有方法 foo(string s1, string s2); 的类。
在 foo 方法中,我有一个 Contract.Requires(s1 != null)。
因此,如果我理解我的代码的含义(是的,我刚刚安装了 CodeContracts 并玩了 :),合约将在构建过程和运行时检查 s1 != null 表达式,抛出 ArgumentException>。
我想测试行为,当我从类 lib 项目调用 foo(null, "test") 时,设计者告诉我这个问题,但是当我从 winform 应用程序项目调用它时,我没有收到任何警告错误列表窗口。那么这是否意味着代码契约只在它们驻留的项目中起作用而不是在外部?
谢谢

更新

我忘了提到我添加的先决条件在静态分析中不起作用。但是,它们确实会在运行时抛出带有适当消息的 ArgumentException。

最佳答案

好的,感谢 MS 团队,我发现了问题。这种奇怪行为的原因是我的程序集名称以“.Contracts.dll”结尾。问题是静态分析器不检查名称以该结尾的程序集。我重命名了程序集,一切都像魅力一样,就像任何其他 MS 产品一样 :)

关于c# - 代码契约(Contract)问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4292862/

10-10 14:30
查看更多