首页 > TAG信息列表 > code-contracts

c#-接口类型的代码协定类的命名约定

我正在使用System.Diagnostics.Contracts命名空间中的Code Contracts类来为我的对象定义一些合同,并且我想知道在针对基本接口定义合同时其他人如何命名其合同类.让我用一个小例子来说明: [ContractClass(typeof(AnimalContract))] public interface IAnimal { // definition h

c#-代码合同警告有关可能失败的“ Assume”调用

在我的一个类中,我有一个ExpandoObject类型的私有字段.该字段是在构造函数中初始化的(this.expected = new ExpandoObject()),因此我相信它永远不会为null. 因此,在此类的一种方法中,我可以放心地添加 Contract.Assumes(this.expected != null) 在将this.expected用于任何对象之

CodeGo.net>代码合同检查线程的亲和力-好主意?

我正在尝试学习代码合同,并了解它们的用处. 我有一个WPF应用程序,因此很多代码必定只能在UI线程上运行.不少实用程序类期望仅从UI线程调用. 好主意,然后在我的代码中撒些这些吗?为什么是/不是? Contract.Requires(Thread.CurrentThread == Application.Current.Dispatcher.Thread);

c#-错误的代码合同警告

我最近将代码合同添加到一个非常大的项目中.在通过数百条警告并添加断言以使检查器平静之后,我留下了一些警告,这些警告似乎显然是错误的!这可能是我可以做的最简单的示例(如果您认为详细信息可能很重要,则完整代码为here): protected Thing DoStuff(A a) { Contract.Requires(a

c# – 代码合同和类型转换

我试图接受Microsoft DevLabs Code Contracts静态分析器并面对我实际上不知道是我还是它们的情况.所以这是代码: public static int GenerateInBetween(int min, int max) { Contract.Requires(min < max); Contract.Requires((long)(max - min) <= (long)

c# – 如何避免Code Contracts语句中的代码重复

我开始使用C#Code Contracts启用静态和运行时检查.问题是某些代码合同检查可能在方法之间重复,我认为没有好办法避免这种情况. 我希望完全避免静态分析仪警告,如果可能的话不要压制它. 让我们考虑一下这个例子: 有以下简单的类.这是业务逻辑模型类的常见示例: class Category {

c# – 私有静态只读字段上的代码约定和失败

我班上有一个私有静态只读字段: public class MyClass { // ISSUE #1 -- requires unproven: path != null private static readonly DirectoryInfo MyDirectory = new DirectoryInfo(Settings.Default.MyDirectoryPath); protected virtual void SomeMethod(

c# – 我应该为任何方法结果做Contract.Ensures吗?

假设我有这个: [Pure] public static TimeSpan Seconds(this int i) { Contract.Ensures(Contract.Result<TimeSpan>() == TimeSpan.FromSeconds(i)); return TimeSpan.FromSeconds(i); } 我是否确保合同以如此严格的方式产生,或者是否是必要的? 在这种情况下? [Pure] publ

代码合同与规范之间的差异#

我想在C#中实现DBC.我面对的是Spec#和Code Contract. Spec#和Code Contract有什么区别?解决方法:这是从Code Contracts FAQs at Microsoft Research: Do Code Contracts have anything to do with Spec#? Code Contracts is a spin-off from the Spec# project. Spec#’s research

c# – 如何正确使用代码合同?

我从原始站点安装了代码合同,并尝试编写一些示例代码.但是R#只是写了跳过方法调用.当我看反编译的源时,我看到该方法是有条件的:必须定义CONTRACTS_FULL常量.我检查了项目设置中的代码合同选项卡中的所有内容,但它似乎不起作用. 怎么修好? 解决方法:user documentation(pdf)说: 2 Co

c# – 代码合同:如何表达这些条件?

我现在正在使用Code Contracts,我不完全确定Contract类的静态方法是否足够强大,可以与条件的数学符号竞争. 我们假设我们得到了一个简单的因子方法 int Factorial(int n); 我会表达以下条件: Precondition: n >= 0 Postconditions: Factorial(n) = 1, in case n = 0 Factorial(n

C#4.0中关于代码合同的书籍

尽管我已经知道Code Contracts已经有一段时间了,因为我已经在Java中使用了它,我想开始在C#中使用它们,因为它们是C#4.0的一部分. 我正在寻找学习材料,书籍或视频.也欢迎Altough教程,我想要阅读全面的内容,而不是典型的“这里是你如何使用需求,这里是你如何使用Ensures”.我正在寻找

c# – 如何在不失去延迟评估优势的情况下使用代码契约来检查Lazy的值?

我的代码看起来像这样: public class Foo { private readonly Lazy<string> lazyBar; public Foo() { lazyBar = new Lazy<string>(() => someExpression); } public string Bar { get { return lazyBar.Value; } }

C#代码合同:为什么不能证明这个简单的条件?

我正在对代码合同进行简单的测试.以下代码处于winform状态.这通过(当然): private void Test(Form form) { Contract.Requires(!string.IsNullOrEmpty(form.Name)); MessageBox.Show(form.Name); } protected override void OnLoad(EventArgs e)