Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实现接口时通过属性确保未经验证_C#_.net_Code Contracts - Fatal编程技术网

C# 在实现接口时通过属性确保未经验证

C# 在实现接口时通过属性确保未经验证,c#,.net,code-contracts,C#,.net,Code Contracts,在我看来,我正在尝试一些相当基本的代码。我把它归结为以下问题。以下是静态分析失败的消息: 编码合同:确保未经验证: 这个,冷冻的 但是,以下各项可以正常工作并满足所有检查要求: using System; using System.Diagnostics.Contracts; namespace PlayAreaCollection2010 { public class StrippedContract { private bool _frozen = fals

在我看来,我正在尝试一些相当基本的代码。我把它归结为以下问题。以下是静态分析失败的消息:

编码合同:确保未经验证: 这个,冷冻的

但是,以下各项可以正常工作并满足所有检查要求:

using System;
using System.Diagnostics.Contracts;

namespace PlayAreaCollection2010
{
    public class StrippedContract
    {
        private bool _frozen = false;

        public void Freeze()
        {
            Contract.Ensures(this.Frozen);
            _frozen = true;
        }

        public bool Frozen { get { return _frozen; } }
    }

}
CodeContracts:已检查1断言:1正确


当我将合同放入界面时,我需要做什么才能满足静态检查器的要求?

IBasic
StrippedContract
的实现中,您需要向
冻结的
属性添加一个post条件:

public bool Frozen {
    get {
        Contract.Ensures(Contract.Result<bool>() == this._frozen);
        return _frozen;
    }
}
public bool冻结{
得到{
Contract.survey(Contract.Result()=此项已冻结);
退货-冻结;
}
}

或者,您可以将
-infer
命令行选项添加到项目属性的“代码合同”选项卡中的静态检查器中。这将允许静态检查器自动推断。

谢谢,这样就可以了。只是快速浏览了一下google,但没有任何帮助-为什么当契约在类本身上时,而不是在接口上定义时,检查器能够做出这种推断?
public bool Frozen {
    get {
        Contract.Ensures(Contract.Result<bool>() == this._frozen);
        return _frozen;
    }
}