- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以开始使用 CodeContracts 而不是:
if (XXX == Y)
throw new ArgumentException("bla bla");
如果我开发了一个库,而我的库用户不使用 CodeContracts,它会如何工作?
最佳答案
假设使用代码契约的代码通过二进制重写器运行,它会像您发布的代码一样抛出异常。重写者遍历代码并用参数检查等替换契约(Contract)代码。这有点像面向方面的编程。在你编译它之后,它会注入(inject)代码来为你处理情况。
如果他们不使用代码契约(Contract),他们将无法获得执行静态分析的好处,静态分析旨在查看契约(Contract)并警告他们可能会根据契约(Contract)和代码出现错误。
关于.net - CodeContracts 应该取代常规的 ArgumentExceptions 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4490857/
假设我有以下类层次结构: public class FooBase { private readonly object _obj; protected FooBase(object o
我有一个类似这样的结构: public struct Test { public int x; public int y; public static bool AreEqual(Test
我有一个使用代码契约的 C# PCL 项目。然而,在 TeamCity 上,项目构建失败,但看起来构建在本地是成功的。然而,构建日志确实声称构建确实失败了,但它没有给出任何原因。 “基于警告构建失败”
我有这个代码: public class CodeContractSample { private readonly List _items = new List(); public
我刚刚开始在一个现有的中型项目中试验 .NET 4 中的 CodeContracts,令我惊讶的是静态检查器向我发出有关以下代码片段的编译时警告: public class Foo { priv
我的类(class)有一个子项集合,我有一个公共(public)访问器。我想提供一个后置条件以确保集合中的项目不为空(我知道,在测试 2 和 3 中调用者可以更改集合,但现在我的目标只是确保从属性返回
我有几个用户控件,它们订阅了另一个类中的事件处理程序。我正在学习 C# 中的 CodeContracts,我想知道为什么静态分析器允许编写这样的代码: void MyUserControl_Mouse
我正在尝试在大型桌面应用程序项目中使用 .NET 3.5 的代码契约(Contract),该项目也具有混合模式 C++ DLL 依赖项,用旧的托管 C++ 语法编写。 真正的解决方案至少包含 20 个
请澄清一下,Code Contracts 是否类似于 FxCop 和 StyleCop?根据在线引用,我们需要在现有代码的函数中添加用于实现代码契约条件的代码。 public void Initial
一旦我为代码契约打开代码重写器,我开始发现以前可以工作的代码存在问题。 我有一个 protected volatile bool 成员字段,它在继承 self 的类的其他程序集中是可见的。在我的程序集
我尝试了以下代码来对检索到的实体启用某种非空检查,以确保它们在执行某些具体业务之前存在: protected T GetRequired(object id) where T : Entity
我可以开始使用 CodeContracts 而不是: if (XXX == Y) throw new ArgumentException("bla bla"); 如果我开发了一个库,而我的库用
给定以下 C# 代码, double x = 2.0; x *= 0.5; bool y = (x == 1.0); Console.WriteLine(y); CodeContracts 给出警告:
我终于 catch 了添加到 .NET 3.5/4.0 框架中的所有新功能。最近几天我一直在使用 CodeContracts,我真的很努力地喜欢它们。我很好奇其他人如何看待 C# 中的 CodeCon
我目前正在将 CodeContracts 添加到我现有的代码库中。 事实证明困难的一件事是使用由 NHibernate 水化的实体。 假设这个简单的类: public class Post {
我研究了使用条件框架来验证数据而不是 if(cond) throw new SomeException(); SomeFramework.MakeSure(cond); 最后我的选择是使用 CodeC
当 C# CodeContracts 时,我有几种报告警告的方法“代码契约(Contract):需要未经证实的:构造函数!= null”静态检查器已启用。 这些特定方法不声明任何契约,也不会被任何声明
我是 codeContracts 的新手,我喜欢它,因为它看起来很干净。 我不喜欢我需要下载一个库才能使其工作这一事实。一直不明白为什么微软没有将它作为整个框架的一部分。 我不想强制团队中的其他同事下
我正在寻找一种简单的方法来强制执行 INotifyPropertyChanged 的正确实现,即当 PropertyChanged 被引发时,它必须引用实际定义的属性。我尝试使用 Microsof
我收到此警告但无法找出问题... CodeContracts: warning: The Boolean condition d1.Count != d2.Count always evaluates
我是一名优秀的程序员,十分优秀!