合同不起作用

时间:2017-12-07 10:28:41

标签: c# code-contracts

我遇到System.Diagnostics.Contracts的问题。

如果我使用Contract.Requires(condition),那么一切都按预期工作。 但我需要一个自定义异常,所以我尝试了Contract.Requires<ToShortException>(condition)

condition错误时,我预计会ToShortException,但我什么也没得到。在调试器中我可以看到,这一行被忽略了。

ToShortException是一个实现Exception的公共类,有3个公共构造函数。

有谁知道我做错了什么?

异常类:

public class ToShortException : Exception
{
    public ToShortException()
    {
    }

    public ToShortException(string message) : base(message)
    {
    }

    public ToShortException(string message, Exception inner) : base(message, inner)
    {

    }
}

班级方法:

    public IDictionary<string, string> getIncident(string name)
    {
        Contract.Requires(!string.IsNullOrWhiteSpace(name)); //works fine
        Contract.Requires<ToShortException>(name.Length == 7); //got not checked

        return _original.getIncident(name);
    }

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。 “项目设置 - &gt;代码合同 - &gt;装配模式”必须是“标准合同要求”。

enter image description here

默认值为“自定义参数验证”。