你好
我有一个关于 CodeContracts 的小问题。我有一个类库项目,它作为一个类,具有方法 foo(string s1, string s2);
在 foo 方法中,我有一个 Contract.Requires(s1 != null)。
因此,如果我理解代码的含义(是的,我刚刚安装了 CodeContracts 并使用了:),合约将在构建过程中和运行时检查 s1 != null 表达式,并抛出 ArgumentException>。
我想测试行为,当我从类 lib 项目中调用 foo(null, "test") 时,设计器告诉我这个问题,但是当我从 winform 应用程序项目中调用它时,我没有收到任何警告错误列表窗口。那么这是否意味着代码契约只能在它们所在的项目中起作用,而不能在外部起作用?
谢谢
UPDATE
我忘了提到我添加的前提条件在静态分析中不起作用。然而,它们确实在运行时抛出 ArgumentException 并带有适当的消息。
好的,感谢 MS 团队,我找到了问题。这种奇怪行为的原因是我的程序集名称以“.Contracts.dll”结尾。问题是静态分析器不检查名称以此结尾的程序集。我重新命名了程序集,一切都像魅力一样工作,就像任何其他 MS 产品一样:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)